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 。

另一个提示是,即使在 Windows 中,您也可以使用 unix / 路径分隔符进行 java 命令和 java fileio 操作。这是保持程序 Unix 和 Windows 兼容的好方法。

仔细检查 shellexec 进程的工作目录,你可以给出一个明确的工作目录(当前目录)。或为所有文件参数(jarname,类文件夹)提供绝对文件路径
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 回答