HelloOverflow的成员。
我想在我的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
所以,如果有人能向我解释我将如何制作它只添加我的课程文件,那将是一个很大的帮助。
感谢。
答案 0 :(得分:0)
您可以使用java.util.jar包执行此操作。
http://docs.oracle.com/javase/6/docs/api/java/util/jar/package-summary.html
答案 1 :(得分:0)
jar命令应该使用-C参数吗?这是我的jar语法,我也提供了一个明确的清单文件。您可以将其保留,并从选项列表中删除m选项。
jar cvfm ./lib/MyLib.jar ./classes/META-INF/MANIFEST.MF -C ./classes。
另一个提示是,即使在Windows中也可以使用unix / path分隔符来执行java命令和java fileio操作。这是保持程序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。文件%29