5

Ubuntu 12.04 の Eclipse 3.7.2 で開発しているプロジェクトがあります。最近、パッケージ間でのクラスの移動を含むクラス階層を再構築しました。メソッドを含むメイン クラス (「ob3.converter.Converter」) を移動しませんでしたpublic static void main(String[] args)

今、実行しようとすると、次のようになります。

Exception in thread "main" java.lang.NoClassDefFoundError: ob3/converter/Converter
Caused by: java.lang.ClassNotFoundException: ob3.converter.Converter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ob3.converter.Converter. Program will exit.

私は、すべてのオーバーヘッドを処理する Eclipse で (Java で) 実際に作業したことがあるだけなので、このエラーやその原因についてはほとんど理解していません。実行構成/クラスパスなどを調べましたが、何を探すべきかわからないため、無駄でした。

誰かが私を正しい方向に向けることができますか? SOをグーグル/検索しましたが、ほとんどのことはマニフェストファイルについて話していますが、どこにも見つかりませんでした。ワークスペース フォルダーには、ソース ファイルしか含まれていません。

私は確認できます:

  • クラス「Converter」はパッケージ「ob3.converter」内に存在します。
  • クラス「Converter」にはpublic static void main(String[] args)メソッドが含まれています。
  • プロジェクト プロパティの Java ビルド パス ページの [ソース] タブには、「converter/lib」と「converter/src」が表示されます。これら 2 つのフォルダーには、プロジェクト ソース全体が含まれています。
  • 実行構成/JRE で使用される JRE は「java-6-openjdk-amd64」です。
  • 実行構成の ClassPath タブは次のようになります。
    • ブーストラップ エントリ:
      • JRE システム ライブラリ [java-6-openjdk-amd64]
    • ユーザーエントリ:
      • コンバーター (デフォルトのクラスパス)
        • コンバータ
  • 最後に正常に実行して以来、Converter.java へのパスは変更されていません。

どんな助けでも大歓迎です!

4

2 に答える 2

2

プロジェクトを再構築する必要があると思います。これを行うには、[Projects] > [Clean...] をクリックします。

Eclipse の自動ビルドでは、クラスのリファクタリングまたは移動で問題が発生することがあります。

于 2012-09-14T19:36:14.993 に答える
0

この同じエラー メッセージが表示されました。私の場合、私は Linux を使用していましたが、java コマンドを発行したユーザーには、クラスパス上の jar のディレクトリに対する十分な権限がありませんでした。

于 2013-09-16T18:41:43.323 に答える