java - 静态嵌套类访问抛出 NoClassDefFoundError

标签 java nested noclassdeffounderror nested-class unhandled-exception

我正在尝试使用由静态嵌套类组成的实用程序类来实现常见功能。这些静态嵌套类正在实现命令样式接口(interface):

public interface BooleanFunction{
    public boolean execute();
}

持有这些实现此接口(interface)的公共(public)类的类是:

public class ExBooleans {

    public static class isComponentOpen implements BooleanFunction {

        private int widgetId;
        private int componentId;

        public isComponentOpen(int widgetId, int componentId) {
            this.widgetId = widgetId;
            this.componentId = componentId;
        }

        @Override
        public boolean execute() {
            return Widgets.getComponent(this.widgetId, this.componentId) != null;
        }
    }

这应该这样调用:

ExUtilities.makeCondition(new ExBooleans.isComponentOpen(RANGE_WIDGET_ID, RANGE_COOK_COMPONENT_ID), 1000)

其中 makeCondition 接受 BooleanFunction :

public static boolean makeCondition (final BooleanFunction booleanFunction, int timeout){
    return Utilities.waitFor(new Condition() {
        @Override
        public boolean validate() {
            return booleanFunction.execute();
        }
    }, timeout);
}

这一切都是为了为 Utilities.waitFor(Condition c, int timeout) 函数提供一个包装器,以获得更清晰、更易读的代码。

但是,当我调用 makeCondition 传入 ExBooleans.isComponentOpen 时,我收到一个运行时错误:

Unhandled exception in thread ~threadnumber~: java.lang.NoClassDefFoundError: api/ExBooleans$isComponentOpen

在包含上面调用的行:

ExUtilities.makeCondition(new ExBooleans.isComponentOpen(RANGE_WIDGET_ID, RANGE_COOK_COMPONENT_ID), 1000)

任何解决此问题的帮助将不胜感激!

最佳答案

我能够通过将 interfacemakeCondition 方法拉入一个单独的类来解决该问题,该类同时容纳这些方法和实用程序实现 isComponentOpen 等。通过将这些全部嵌套在一个类中,我不再收到错误,并且代码组合在一起可能更有意义。

尽管如此,我仍然不确定错误是从哪里来的。

关于java - 静态嵌套类访问抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377172/

相关文章:

python - 使用 python 将嵌套列表转换为行

java.lang.NoClassDefFoundError : org/slf4j/impl/StaticLoggerBinder

java - Tomcat 7 偶然 NoClassDefFoundError cxf BaseUrlHelper

java - 使用 DTO 或值对象模式来应对延迟加载异常

java - Jasmin 在 CLASSPATH 中

java - 为什么我没有在以下代码中引用不明确的方法?

Java lwjgl 小程序 noclassdeffound

java - 我想用Java读取两个文件,一个.xlsx和一个.csv,并希望根据文件的扩展名在控制台上显示内容

java - 作为 n 的函数,确定递增变量计数的语句执行的频率

c++ - 如何为模板嵌套类类型的函数声明参数?