0 Replies Latest reply: Jan 29, 2011 12:27 AM by 835231 RSS

    JDev11.1.1.4で複数プロジェクト使用時にjava.lang.NoClassDefFoundError発生

    835231
      Socket通信の勉強がしたくてJDeveloper11gR1上に一つのアプリケーションの中に
      ServerProcessというプロジェクトとClientProcessという二つのプロジェクトを作りました。
      それぞれのプロジェクト配下には一つのJavaクラスだけ定義しておりmainメソッドを実装しています。

      まずServerProcessプロジェクト配下にサーバー用のプログラムを作成してテスト実行(F11)したところ想定通りに動きました。
      次にClientProcessプロジェクト配下にクライアント用プログラムを作成したテスト実行(F11)したところ下記のエラーになりました。

      エラー内容を確認したところ、java.lang.NoClassDefFoundErrorが出ていたのでクラスパスを確認したのですが、
      なぜかClientProcessプロジェクトのクラスを動かそうとしているのにServerProcess側のクラスディレクトリが指定されてしまっています。

      意味がわからないもののClientProcessプロジェクトのプロジェクト・プロパティ→ライブラリとクラスパス「C:\JDeveloper\mywork\Socket\ClientProcess\classes」を明示的に指定して再度テスト実行してみました。
      しかし、現象は変わりません。

      原因はなんでしょうか?設定ミスですか?仕様ですか?バグですか?
      どうやって対応すればよろしいのでしょうか?

      ご存知の方がおられましたら教えてください。

      【エラー内容】
      "D:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1\bin\javaw.exe" -jrockit -classpath C:\JDeveloper\mywork\Socket\.adf;C:\JDeveloper\mywork\Socket\ServerProcess\classes -Djavax.net.ssl.trustStore=D:\Oracle\Middleware\wlserver_10.3\server\lib\DemoTrust.jks clientprocess.ClientProcess 1010
      Exception in thread "Main Thread" java.lang.NoClassDefFoundError: clientprocess/ClientProcess
      Caused by: java.lang.ClassNotFoundException: clientprocess.ClientProcess
           at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
           at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
           at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
      プロセスが終了コード1で終了しました。

      【補記】
      ・各プロジェクトプロパティの「実行/デバッグ/プロファイル」にあるデフォルトの実行構成で各クラスの起動設定を実施しています。
      ・クラスパスだけC:\JDeveloper\mywork\Socket\ClientProcess\classesに変更してコマンドラインでClientProcessプロジェクトのクラスを
       実行したところクラスローダーのエラーは発生せず正常に動きました。