This question already has answers here:
How do I fix a NoSuchMethodError?
(28个答案)
4年前关闭。
您好,我很早以前就创建了这个枚举。
枚举在派生代码中使用,这意味着,每次导出时,另一个项目中都包含此确切的代码。
但是最近,在导出整个项目之后,方法“ angle()”引发了NoSuchMethodError:... angle()F
首先,方法末尾的F是什么意思?
第二,100%确定性的最新代码怎么可能引发此错误?
编辑:我确实找出了导致问题的原因……或多或少。
另一个.jar(插件)也使用受影响项目中的代码。
但是,它仅取决于它,不会以任何方式重新定义它。我检查了很多可能的原因,但找不到任何原因。
似乎jar的唯一存在是导致该错误。
(28个答案)
4年前关闭。
public enum CardinalDirection {
NORTH (90),
EAST (0),
SOUTH (270),
WEST (180);
private float angle;
CardinalDirection(float angle) {
this.angle = angle;
}
public float angle() {
return angle;
}
public CardinalDirection opposite() {
switch (this) {
case EAST: return WEST;
case NORTH: return SOUTH;
case SOUTH: return NORTH;
case WEST: return EAST;
default: return null;
}
}
}
您好,我很早以前就创建了这个枚举。
枚举在派生代码中使用,这意味着,每次导出时,另一个项目中都包含此确切的代码。
但是最近,在导出整个项目之后,方法“ angle()”引发了NoSuchMethodError:... angle()F
首先,方法末尾的F是什么意思?
第二,100%确定性的最新代码怎么可能引发此错误?
Caused by: java.lang.NoSuchMethodError: org.thearaxgroup.surf.enums.CardinalDirection.angle()F
at org.thearaxgroup.act.object.ActionBoxDisplayManager.newArmorStand(ActionBoxDisplayManager.java:65) ~[?:?]
at org.thearaxgroup.act.object.ActionBoxDisplayManager.getArmorStand(ActionBoxDisplayManager.java:80) ~[?:?]
at org.thearaxgroup.act.object.ActionBoxDisplayManager.reloadArmorStand(ActionBoxDisplayManager.java:30) ~[?:?]
at org.thearaxgroup.act.command.CommandActBox.onCommand(CommandActBox.java:171) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.9.jar:git-Spigot-bc01c3a-55b0def]
... 15 more
编辑:我确实找出了导致问题的原因……或多或少。
另一个.jar(插件)也使用受影响项目中的代码。
但是,它仅取决于它,不会以任何方式重新定义它。我检查了很多可能的原因,但找不到任何原因。
似乎jar的唯一存在是导致该错误。
最佳答案
这是运行时错误。引发异常的代码是针对包含该方法的代码版本进行编译的,但是部署代码的可用版本没有该方法。
换句话说,可用于编译器或IDE的库与部署位置的库之间存在版本不匹配的情况。
关于java - fork 代码中的Java NoSuchMethodError ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36116147/