Java NoClassDefFoundError
我有一个问题,NoClasDefFoundError被抛出。这让我很困惑,因为我使用的是接口,并且没有可用的类定义。我读过一些指向类路径的帖子,但我不认为这是这里的问题,尽管我可能错了。我正在使用NetBeans 6.9.1 IDE 我已经创建了一个示例设置来重现该问题。四个项目:接口、对象、定位器和使用者。您将在下面找到实现 在运行时,消费者抱怨缺少SomeObject实现,因为它正在接受接口,所以不应该意识到这一点 主线程中的异常 java.lang.NoClassDefFoundError: 对象/某物 我错过了什么Java NoClassDefFoundError,java,interface,noclassdeffounderror,Java,Interface,Noclassdeffounderror,我有一个问题,NoClasDefFoundError被抛出。这让我很困惑,因为我使用的是接口,并且没有可用的类定义。我读过一些指向类路径的帖子,但我不认为这是这里的问题,尽管我可能错了。我正在使用NetBeans 6.9.1 IDE 我已经创建了一个示例设置来重现该问题。四个项目:接口、对象、定位器和使用者。您将在下面找到实现 在运行时,消费者抱怨缺少SomeObject实现,因为它正在接受接口,所以不应该意识到这一点 主线程中的异常 java.lang.NoClassDefFoundError
package interfaces;
public interface ISomeInterface { }
package objects;
import interfaces.ISomeInterface;
public class SomeObject implements ISomeInterface{ }
package locator;
import interfaces.ISomeInterface;
import objects.SomeObject;
public class Locator { public static ISomeInterface LocateImplementation() { return new SomeObject(); }}
package consumer;
import interfaces.ISomeInterface;
import locator.Locator;
public class Main { public static void main(String[] args) { ISomeInterface object = Locator.LocateImplementation(); }}
可以使用接口获得NoClassDefFoundError异常,就像使用类一样。以异常的名称考虑类,是编译类或接口而不是java类生成的.class文件。
这意味着类/接口对象.SomeObject在类路径上不可见。检查该.class文件的位置并确保它在您的类路径上-如果您确定它在那里,请给我们一些屏幕截图或一些可能有助于调试问题的内容。您可以使用接口获得NoClassDefFoundError异常,就像使用类一样。以异常的名称考虑类,是编译类或接口而不是java类生成的.class文件。
这意味着类/接口对象.SomeObject在类路径上不可见。检查该.class文件的位置并确保它在您的类路径上-如果您确定它在那里,请给我们一些屏幕截图或一些可能有助于调试问题的内容。将NoClassDefFoundError视为运行时链接问题。JRE加载了一个类或接口,它引用了另一个类或接口,但找不到该引用的类 如果存在打包/类路径问题,以致运行时环境无法反映构建时的情况,那么这是唯一可能发生的方法
如果您是从IDE启动它,请确保您没有忽略任何错误,也没有启动它。某些类不会以这种方式生成。将NoClassDefFoundError视为运行时链接问题。JRE加载了一个类或接口,它引用了另一个类或接口,但找不到该引用的类 如果存在打包/类路径问题,以致运行时环境无法反映构建时的情况,那么这是唯一可能发生的方法
如果您是从IDE启动它,请确保您没有忽略任何错误,也没有启动它。某些类不会以这种方式生成。在locateImplementation方法中,您将返回新的SomeObject,
JVM在被调用时需要有自己的定义。我认为它丢失了。在locateImplementation方法中,您正在返回新的SomeObject,
JVM在被调用时需要有自己的定义。我认为它丢失了。您应该检查SomeObject类是否在类路径中,因为- JVM将运行以下代码-
ISomeInterface object = Locator.LocateImplementation();
当它这样做时,它将调用Locator.LocateImplementation。此代码在内部尝试实例化在类路径中找不到的SomeObject类
所以你的理解力不足
这让我很困惑,因为我正在使用
接口,并且没有类定义
应该有
不是真的有效。您应该检查SomeObject类是否在类路径中,因为- JVM将运行以下代码-
ISomeInterface object = Locator.LocateImplementation();
当它这样做时,它将调用Locator.LocateImplementation。此代码在内部尝试实例化在类路径中找不到的SomeObject类
所以你的理解力不足
这让我很困惑,因为我正在使用
接口,并且没有类定义
应该有
不是真的有效。通常我遇到这些问题不是因为缺少类,而是因为静态初始值设定项中存在错误
尝试在调试器中运行代码,并将异常断点设置为在引发任何异常(无论是否捕获)时中断。我敢打赌,由于某种原因,静态初始值设定项中存在未捕获的异常。通常,我遇到这些问题的原因不是缺少类,而是静态初始值设定项中存在错误
尝试在调试器中运行代码,并将异常断点设置为在引发任何异常(无论是否捕获)时中断。我敢打赌,由于某种原因,静态初始值设定项中存在未捕获的异常。任何接口都必须在类内声明
public class Calbacks {
public interface IBaseFragmentInterface {
void NotifyMainActivity();
}
}
任何接口都必须在类内声明
public class Calbacks {
public interface IBaseFragmentInterface {
void NotifyMainActivity();
}
}
谢谢大家的回答!!这毕竟是一个类路径问题。我并没有意识到消费者也需要看到对象,尽管定位器中有这些对象
这是classpath。谢谢大家的回答!!这毕竟是一个类路径问题。我不知道消费者也需要查看对象,尽管定位器在其类路径中有对象。这是我的问题:引用的引用不在我的类路径中。这是我的问题:引用的引用不在我的类路径中。