我在我的一个程序中得到了这个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 的 LIST 还具有 MetricsRegistrar 类包的条目。我还应该检查什么?
为了完整起见,我使用 Ant 构建并在 JBoss 中运行。
在 MetricsRegistrar 的类初始化期间,您是否在执行某些操作?就像里面的代码一样
static {
...
}
由于这个问题,有人也有一个NoClassDefError。
这是一个插件问题:您需要在插件配置文件中添加类和导入。Java Web 应用程序具有 web.xml 配置文件,可在应用程序首次启动时由运行它的容器读取,
另一方面,对于插件,插件配置文件(即ProjectName.plugin.xml)文件由使用此插件的应用程序引擎加载和读取。
通常,这意味着在异常中命名的类或其所依赖的其他类的静态初始化期间抛出(并且未捕获)未经检查的异常。
如果这是第一次尝试类装入,则触发问题的异常应该是NoClassDefFoundError
异常的"原因"链。