12

オプションからの呼び出しとからの-classpathオプションの呼び出しの違いは何ですかjavacjava

例えば:

javac -classpath MyJar.jar GetJar.java
java -classpath MyJar.jar:. GetJar

次のように機能します。

javac -classpath MyJar.jar GetJar.java
java GetJar

したがって、基本的に最初の -classpath に関連する場所javacがそこにある必要がありますが、Java コマンドラインではオプションである可能性があります。なんで?どのような状況でそれが必須になるか知っていますか。そして、より一般的には、によって呼び出された効果は何ですか、そして-classpathによって呼び出されたjavac効果は何ですか.-classpathjava

前もって感謝します。

4

2 に答える 2

11

1 つは、コンパイルに使用されるクラスパスです。もう 1 つは、実行に使用されるクラスパスです。そして、それらは同じものである必要はありません。コンパイル プロセスに必要なクラスのセットは、コンパイルされるすべてのクラスによって参照されるすべてのクラスです。一方、ランタイム JAR は、空の main メソッドと依存関係のないスタンドアロン クラスを呼び出している可能性があります。

実行時にクラスの依存関係が動的に解決されることを覚えておいてください。つまり、クラスは必要なときにのみロードされます (これは一般化であり、ブート クラスとシステム クラスは常にロードされます)。

于 2013-02-27T20:28:46.240 に答える
1

このドキュメントには、質問に対する回答が含まれています

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html

-classpath毎回使用するのは非常に時間のかかる作業です。代わりに、環境変数を使用します (Java Mail などのパッケージを扱っている場合)。

クラスパスはコンパイルに使用されます。Javacコードをバイトコードに変換する Java コンパイラです。

javaJavaソースファイル/jarを実行するために使用されます。

于 2013-02-27T21:00:15.967 に答える