0

StackOverflow のメンバーの皆さん、こんにちは。

次のコードを使用して、Java アプリケーションで jar ファイルを作成したいと考えています。

    private void javaToClass()
{
    try {
        String path = new File(".").getCanonicalPath();
        String command = "cmd /c javac " + path + "\\files\\*.java";

        System.out.println("Building class files...");
        Runtime.getRuntime().exec(command);
        System.out.println("Class files have been built");
    } catch (IOException e) {
    }
}

private void classToJar()
{
    try {
        String path = new File(".").getCanonicalPath();
        String command = "cmd /c jar cf Built.jar " + path + "\\files\\*.class";

        System.out.println("Building jar file...");
        Runtime.getRuntime().exec(command);
        System.out.println("Jar file has been built");
    } catch (IOException e) {

    }
}

したがって、これはjarファイルを構築しますが、クラスファイルをjarファイルに追加しません。代わりに、システム ディレクトリを追加します: http://i.stack.imgur.com/cTrbO.png

したがって、クラスファイルのみを追加する方法を誰かが私に説明できれば、それは大きな助けになります。

ありがとう。

4

2 に答える 2

1

jar コマンドは -C パラメータを使用する必要がありますか? これが私の jar 構文です。明示的なマニフェスト ファイルも指定します。それを省略して、オプションリストから m オプションを削除できます。

jar cvfm ./lib/MyLib.jar ./classes/META-INF/MANIFEST.MF -C ./classes .

もう 1 つのヒントは、Windows でも Java コマンドと Java ファイル操作に unix / パス区切り文字を使用できることです。プログラムの Unix と Windows の互換性を保つ良い方法です。

shellexec プロセスの作業ディレクトリを再確認してください。明示的な作業ディレクトリ (現在のディレクトリ) を指定できます。または、すべてのファイル引数 (jarname、classes フォルダー) に絶対ファイルパスを指定します
http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec%28java.lang.String[] ,%20java.lang.String[],%20java.io.File%29

于 2013-10-16T09:45:49.077 に答える
0

これは、java.util.jar パッケージを使用して行うことができます。

http://docs.oracle.com/javase/6/docs/api/java/util/jar/package-summary.html

于 2013-10-16T09:37:49.707 に答える