1

Netbeans で Java Web アプリケーションを作成し、デプロイして実行しようとすると、次の例外がスローされました。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/derby/iapi/services/property/PropertyUtil
    at org.apache.derby.impl.drda.NetworkServerControlImpl.getPropertyInfo(Unknown Source)
    at org.apache.derby.impl.drda.NetworkServerControlImpl.<init>(Unknown Source)
    at org.apache.derby.drda.NetworkServerControl.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.iapi.services.property.PropertyUtil
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 3 more

クリーンアンドビルドは正常に機能しています。以前、問題に直面しているマシンに別の Java Web アプリケーションを正常にデプロイして実行していました。

私はNetbeans 7.1を使用していました。Netbeans 7.3 にアップグレードしようとしましたが、問題は解決しませんでした。また、Glassfish のフォルダに MySQL Connector/J JAR ファイルを配置しようとしました/libが、問題は解決しませんでした。

4

2 に答える 2

3

Derby クラスの ClassNotFoundException を取得する基本的な理由は 2 つあります。

  1. CLASSPATH に Derby jar の 1 つがありません。例えば、CLASSPATH に derbynet.jar を入れたが、derby.jar を持っていない可能性があります。
  2. CLASSPATH に Derby jar の複数のコピーがあり、バージョンに互換性がありません。例えば、クラスパスに 2 つの異なる Derby.jar クラスがあり、古い方が新しい方と互換性がない場合があります。

次の 3 つのことが、これをさらに複雑にする可能性があります。

  1. Derby の jar ファイルは、多くの場合、他のパッケージにバンドルされています。たとえば、Glassfish 自体にバンドルされている Derby のコピーがあると思います。したがって、Glassfish にバンドルされている Derby のバージョンと、アプリケーションにパッケージ化されているバージョンとの間に競合がある可能性があります。
  2. 最新バージョンの Java では、Java 仮想マシン自体が始動時に Derby JDBC ドライバーを「自動ロード」します。つまり、Derby がロードされる前に、すでにロードされている場合があり、Derby のどのバージョンを使用しているかを制御する機能が複雑になる可能性があります。使用しています。
  3. Java-EE クラスパスの規則は複雑で、アプリケーションの実行中のクラスパスは、アプリケーションごとのクラスパスの場所、アプリケーション サーバーが提供するクラスパスの場所、およびシステム クラスパスの場所から構築されます。

Derby 'sysinfo' ツールは、CLASSPATH の問題を診断するのに役立つように設計されているため、これを使用して、クラスパスで見つかった Derby jar のコピーをより完全に把握することができます。

お役に立てれば!

于 2013-03-24T17:09:26.117 に答える
2

そのマシンの唯一の問題は、誰かが Java を削除したことです。:(

于 2013-03-27T13:54:45.240 に答える