【问题标题】:Java NoSuchMethodError in forked code [duplicate]分叉代码中的Java NoSuchMethodError [重复]
【发布时间】:2016-03-20 16:10:35
【问题描述】:
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 的唯一存在导致了错误。

【问题讨论】:

  • 你能附上完整的堆栈跟踪吗?

标签: java enums nosuchmethoderror


【解决方案1】:

这是一个运行时错误。引发异常的代码是针对包含该方法的代码版本编译的,但部署代码的可用版本没有该方法。

换句话说,编译器或 IDE 可用的库与部署位置的库之间存在版本不匹配。

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2016-09-21
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多