导致此NoClassDefFoundError错误的原因是什么?

时间:2012-04-25 14:40:19

标签: java ant jar

我在我的一个程序中得到了这个NoClassDefFoundError:

10:26:56,893 ERROR [STDERR] Exception in thread "Timer-4" 
10:26:56,893 ERROR [STDERR] java.lang.NoClassDefFoundError: Could not initialize class
    com.something.plugin.gameserver.common.MetricsRegistrar
10:26:56,893 ERROR [STDERR] at com.something.plugin.gameserver.main.GameServerPlugin.init(GameServerPlugin.java:48)

我知道它是一个类路径问题,但奇怪的是发生错误的GameServerPlugin类和它寻找的MetricsRegistrar类在同一个jar中。那么一个人不能在班级道路上而另一个人不能正确?

我检查了Jar文件,它有相关的类文件,所以也不是问题。

jar的INDEX.LIST还有一个MetricsRegistrar类包的条目。我还应该检查什么?

为了完整性,我正在使用Ant构建并在JBoss中运行。

3 个答案:

答案 0 :(得分:2)

这是一个插件问题: 您需要在插件配置文件中添加类和导入。 Java Web应用程序具有web.xml配置文件,该文件在应用程序首次启动时由运行它的容器读取,
另一方面,对于插件,插件配置文件(即ProjectName.plugin.xml)文件由使用此插件的应用引擎加载和读取。

答案 1 :(得分:2)

您是否在MetricsRegistrar的类初始化期间做了些什么?像

中的代码一样
static { 
 ... 
} 

Here由于此问题,有人也有NoClassDefError。

答案 2 :(得分:0)

通常,这意味着在异常中指定的类的静态初始化期间抛出(并且未捕获)未经检查的异常,或者它所依赖的其他类。

如果这是第一次尝试类加载,那么触发问题的异常应该是NoClassDefFoundError异常的“原因”链。