何年もの間、IDE (Eclipse) を使用して jar ファイルをコンパイルしてきました。何年にもわたって、それらがどのように機能するかを学びましたが、jar がメインメソッドの場所をどのように認識しているかをまだ完全には理解していません。手動でコンパイルするのがどれほど簡単か (またはそうでないか) に興味があります。
私が取り組んでいる (一種の) IDE があり、ユーザーからのファイルと、jar または他のクラス (API) の束の両方を含む jar をコンパイルして実行できる必要があります。ここでJavaクラスに言及しているJavaCompiler
がデモコードを提供していないいくつかの質問を見ました。手動でコンパイルする方法を知っている人はほとんどいないようですので、貢献したいと思います。では、Java コードを使用して jar ファイルを作成するにはどうすればよいでしょうか。デモコードを提供してください。
1 に答える
4
jar が main メソッドの場所をどのように認識しているか、まだ完全には理解できていません。
それがマニフェスト ファイルの役割です。
また、手動でコンパイルするのがどれほど簡単か (またはそうでないか) にも興味があります。
それは非常に簡単です。クラス ファイルを作成した後でjar
ツールを使用します。
完全なウォークスルーをしましょう。
src
というディレクトリとというディレクトリを作成しますbin
。の下に、ディレクトリとそのディレクトリ内で呼び出されるファイルをsrc
作成します。demo
Test.java
package demo;
public class Test {
public static void main(String[] args) {
System.out.println("Working!");
}
}
コードをコンパイルします。
javac -d bin src/demo/Test.java
(これは Unix と Windows の両方で動作します。)
次に、という名前のマニフェスト ファイルを作成します。実際にどこに移動するかは問題ではありませんが、しばらくの間manifest.txt
はそのままにしておきます。src
Main-Class: demo.Test
jar ファイルを作成します。
jar cfm test.jar src\manifest.txt -C bin demo/Test.class
そしてそれを実行します:
java -jar test.jar
最近では、自分でマニフェスト ファイルを作成する代わりに、コマンド ラインでエントリ ポイントを指定できます。
jar cfe test.jar demo.Test -C bin demo/Test.class
jar
ツールの使用方法とマニフェストの潜在的な内容の詳細については、リンクされたドキュメントを参照してください。
于 2013-07-18T22:23:00.683 に答える