3

javac -sourcepath オプションのポイントは何ですか?

ファイル Ball.java とファイル Eight.java があるとします。次の実行に違いはないようです。

javac Eight.java lib/pool/Ball.java

javac Eight.java -sourcepath lib

クラスパスは、ソースをいじる必要のない開発者にクラスファイルを配布するだけでよいことを意味するため、私には理にかなっていますが、ソースが自分のものである場合にのみソースを持っている/必要とする可能性が高いと思います内部プロジェクトなので、なぜそれが必要なのか理解できません。

クラスではなく、ソースコードの大規模なリポジトリを持っている人はいますか?

さらなるテストから、 -sourcepath はクラスパスのようにソースの最終更新日を考慮に入れていないことを確認したため、ビルド中の時間を節約することさえできなかった. -classpath を使用する場合と同様に、.class ファイルが存在しないのにソースが存在する場合、または .java ファイルが .class ファイルよりも新しい場合は、.class ファイルがビルドされますが、ソースパス上のソース ファイルは関係なく再ビルドされます。彼らがどれほど新しいか。また、-sourcepath と -classpath の両方が指定されている場合、ソース ファイルが新しい場合にのみ再構築するクラスパスのアクションが実行されるため、ソースパスとクラスパスを指定してもまったく意味がないように見えます。また、-sourcepath と -classpath の両方が解決に必要なソース ファイルのみをビルドすることを確認するためにテストしました。

-sourcepath のポイントは怠惰によるものですか(すべてのソースファイルを抽出して指定したくない)? また、-classpath よりも -sourcepath を使用する利点はありますか? それらは同じことをしているように見えますが、ソースを再構築する必要がないときに時間を節約することで、クラスパスのパフォーマンスが向上します。

4

2 に答える 2

1

sourcepath は、.class ファイルが存在しない、コンパイルを要求したファイル (この例では Eight.java) で参照されているクラスの .java ファイルを見つけるために使用されます。コンパイラはそれらも自動的にコンパイルします。.java と対応する .class ファイルの変更時刻を比較し、新しい場合は .java を再コンパイルするかどうかはわかりませんが、そうすると思います。

于 2013-04-24T11:48:22.160 に答える
0

プロジェクトまたはサブプロジェクトの一部を構築したい場合、開発中に一般的にこれを使用することを開発中の他の同僚から見つけました。すべてをゼロから構築する (数時間かかる可能性がある) 代わりに、単にいくつかのプロジェクトを構築したいだけで、プロジェクト全体の他のディレクトリを -sourcepath で指定して、クラスを解決できるようにします。これは、必要な依存関係を自動的に見つけて、必要なときにそれらをビルドできることを意味します。

また、依存関係の収集の順序が非常に整理されていない可能性があるため、これは Maven ビルド中に役立つ可能性があることも知らされました。ビルド時に jar が存在しないために依存関係が失われるのではなく、コード ツリー全体をソースパスとして指定できます。これは最善のアドバイスではないと思いますが、誰かが構築に問題を抱えている場合に役立ちます。

于 2013-05-03T14:36:43.097 に答える