1

我在我的一个程序中收到了这个 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 中运行。

4

3 回答 3

2

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

于 2012-04-25T14:52:39.220 回答
2

你在 MetricsRegistrar 的类初始化期间做些什么吗?喜欢里面的代码

static { 
 ... 
} 

由于这个问题,这里有人也有 NoClassDefError 。

于 2012-04-25T15:03:32.433 回答
0

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

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

于 2012-04-25T15:08:35.513 回答