1

プログラムの 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 内にあります。では、1 つはクラス パスに入れられず、もう 1 つは正しくありませんか?

問題のクラスファイルが含まれている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 に答える