2

私の環境は Windows 7 と JDK 1.7 です。

環境変数を設定していません。何も出力しません。CLASSPATHecho %CLASSPATH%

Java コンパイラ: C:\Program Files\Java\jdk1.7.0_10\bin
Java ソース: にあるD:\tmpmulu\Tj.java

以下のようにコマンドを実行します。

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu\ d:\tmpmulu\Tj.java

できます。コマンドはクラスパスを設定し、ファイルをコンパイルしました。

しかし、クラスパス.の代わりに使用するコマンドを変更すると、次のようになります。d:\tmpmulu\

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp . d:\tmpmulu\Tj.java

それもOKです。

それは私を混乱させました。は.現在のパスを意味し、 である必要がありますc:\。どのように実行に成功しましたか?

別の質問は、以下のようなコマンドです。

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu\ Tj.java

私の考えでは、クラスパスがに設定されているため、ファイルd:\tmpmulu\が見つかるはずです。Tj.javaしかし、結果は「ファイルが見つかりません Tj.java」です。

誰か詳細教えてくれませんか?

4

2 に答える 2

3

おそらく、あなたのコードは基本的にクラスパスに何かがあることに依存していません。JDK のクラスのみを使用する場合は、まったく問題ありません。

クラスパスは、ソース コードではなく、クラス ファイルの検索にのみ使用されることに注意してください。これは、ソース パスがクラスパス上にない場合に失敗しないことと、クラスパスを使用して を見つけようとしたときに失敗することの両方を説明しています。Tj.java

于 2013-01-30T13:56:49.077 に答える
0

まず、 javac -cpでコンパイルしている場合。myClass.java、 -cp を省略できます。これはデフォルトのクラスパスであるためです。次に、jdbc コネクタなど、標準の JDK ライブラリに含まれていない追加の JAR ファイルへの参照を指定する必要がある場合は、 -cpを使用する必要があります。クラスが追加のライブラリを必要としない場合、javacにどのディレクトリを調べるように指示するかは問題ではありません。

于 2013-01-30T14:11:29.937 に答える