我有以下Java代码。它完成了它的目的,但我在创建一个jar文件时遇到了问题。
import java.io.*;
public class openfile{
public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec
("c:\\Users\\user\\Desktop\\"+ "shares.bat /A");
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
}
它编译没有问题,使用java openfile时没有问题。当我尝试使用以下命令创建jar文件时出现问题:
jar cf MyJar.jar manifest.txt openfile.java openfile.class
但是当我尝试使用
运行jar时java -jar MyJar.jar
我收到以下错误消息:
Failed to load Main-Class manifest attribute from MyJar.jar
manifest.txt的文本如下:
Main-Class: openfile
知道我做错了吗?
答案 0 :(得分:2)
我相信我遇到了问题。
在manifest.txt文件中
manifest.txt的文本如下:
Main-Class: openfile
您需要在最后一行之后提供换行符
所以只需在此行后输入Enter(&lt ;-)(回车)。
Main-Class: openfile
请参阅this sun文档。这是一段摘录。
警告:文本文件必须以a结尾 新线或回车。最后 如果它不会被正确解析 不会以新行结束或 回车。
我用这个验证了它的确有效。 希望这会有所帮助。
答案 1 :(得分:0)
假设你有一个带有声明主方法的类openfile,那么这应该有效:
jar cvef MyJar.jar openfile openfile.class
如果您已经有清单并希望包含它,请尝试以下方法:
jar cvmf MyJar.jar manifest.txt openfile.class
答案 2 :(得分:0)
您的清单文件的内容必须是:
清单 - 版本:1.0
Main-Class:openfile
在这两行之后必须留下一个空白行,因为不留下它可能会产生问题。