0

私はJavaが初めてで、質問のタイトルがどれだけ適切かわかりません。何か良いタイトルを教えてください。

.pstMS Outlook のファイルの解析に関連するさまざまなことを実行する多くの実行可能モジュールを含む Java API を取得しました。そして私の問題は、executeコマンドを実行し.classてAPIの1つのモジュールのファイルを実行すると、この例外が発生することです( java -classpath /opt/Java/libs/JPST/lib/jpst.jar /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example)-

Exception in thread "main" java.lang.NoClassDefFoundError: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example
Caused by: java.lang.ClassNotFoundException: .opt.Java.libs.JPST.examples.GetInboxMessages.bin.Example

        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:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example.  Program will exit.

これまでのところ... andコマンドを正しく実行していると結論付けた前の質問
を確認できます。しかし、上記の「例外」がまだ発生しています。compileexecute

私は API の開発者に、Eclipse または Netbeans IDE を入手すべきだと言っていると尋ねました。彼は言った

examplesAPI のフォルダー構造内のフォルダーは、Eclipse ワークスペース全体です。

そしてまた言った

すべての例をコンパイルして実行する方が簡単です。

そして今...
だから、Java用のEclipse Heliosをセットアップしました。IDE を使用して、すべての例 (examples フォルダー内のモジュールだと思います) を簡単にコンパイルして実行する方法を教えてください。私は以前、PHP 用に Eclipse を使用したことがありますが、Java 用には使用したことがありません。

API のフォルダー構造
これらのモジュールの 1 つのファイル を実行する必要があり.classます (多くのモジュール フォルダーが examples 内に存在しますdirectory)。API のサンプル フォルダー内には、このようなモジュールが多数存在します。これらの各モジュール フォルダーには、binフォルダー (.classファイルを含む) とsrcフォルダー (.javaファイルを含む) が含まれます。そのようなファイルを 1 つ実行する必要があり.classます。

libファイルを含むディレクトリがあります.jar(ターゲット ファイルによって参照される必要があり.classます)。ディレクトリは、libディレクトリと同じレベルにありexamplesます。

解決策
Jonathan によって提供された解決策が機能することを確認しました (エリプスを使用しない場合のみ確認済み)。より明確にするclasspathために、コンパイル コマンドと実行コマンドの両方にすべてのクラスの場所を含める必要があります。Example.javaしたがって、依存関係のあるファイルをコンパイルして実行する必要がある場合は、次のようにしますParent.jar

コンパイル

javac -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.java/file/ Example.java

実行する

java -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.class/file Example

セパレーターに注意してください:-Linuxおよび;Windows用である必要があります。

ありがとう、
サンディパン

4

2 に答える 2

1

Eclipse が起動すると、使用するワークスペースを尋ねられます。サンプル フォルダーを選択すると、実際に Eclipse ワークスペースである場合は、すべてのプロジェクトが既にセットアップされていることがわかります (プロジェクトのサイズとマシンの速度によっては、すべてをビルドするのに時間がかかる場合があります)。次に、必要なクラスを見つけて実行します。すべてが正しく設定されていれば、動作するはずです。そうでない場合は、開発者に戻って詳細を確認する必要がある場合があります。

しかし、その 1 つのクラスを実行するのに Eclipse は必要ないと思います。質問の冒頭で提供したスタックトレースを見ると、クラスパスを適切に設定していないために実行に失敗したようです。試す:

java -classpath /opt/Java/libs/JPST/lib/jpst.jar:/opt/Java/libs/JPST/examples/GetInboxMessages/bin Example

非常に簡単に説明すると、クラスパスには、Java が必要なクラスを探す場所がリストされています。実行するクラスは、ファイル パスとしてではなく、クラスパスに対して相対的に指定します。実行しようとしているクラスはフォルダー「/opt/Java/libs/JPST/examples/GetInboxMessages/bin」にあるため、このフォルダーはクラスパス上にある必要があります (使用している場合は、UNIX ベースのシステムを想定しています)。 Windows では、「:」ではなく「;」を使用してエントリを区切ります)。次に、クラスパスに対して相対的に単独で実行するクラスを指定するだけです (この場合は、単独のクラス名です)。

これは非常に基本的な概要であることに注意してください。パッケージ (bin フォルダーの下に表示されるフォルダー) の使用を開始すると、事態はより複雑になります。これは、Eclipse のようなプログラムを使用する利点の 1 つです。これは、多くのことを処理してくれるからです。

于 2011-01-19T14:19:02.697 に答える
0

クラスパスの問題のように聞こえます。

  • Eclipse でプロジェクトを右クリックします。

  • buildPath > ビルド パスの構成に移動します

  • jar ファイルが [ライブラリ] タブで参照されていることを確認し、参照されていない場合は追加します。
于 2011-01-19T13:29:36.050 に答える