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 へのパスは変更されていません。
どんな助けでも大歓迎です!