创建可执行Java Jar文件时遇到问题
我有以下Java代码。它完成了它的本意,但我在创建jar文件时遇到了问题创建可执行Java Jar文件时遇到问题,java,executable-jar,Java,Executable Jar,我有以下Java代码。它完成了它的本意,但我在创建jar文件时遇到了问题 import java.io.*; public class openfile{ public static void main(String argv[]) { try { String line; Process p = Runtime.getRuntime().exec ("c:\\Users\\u
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
但是,当我尝试使用
java -jar MyJar.jar
我收到以下错误消息:
Failed to load Main-Class manifest attribute from MyJar.jar
manifest.txt的文本如下:
Main-Class: openfile
Main-Class: openfile
知道我做错了什么吗?我想我遇到了问题 在manifest.txt文件中 manifest.txt的文本如下:
Main-Class: openfile
Main-Class: openfile
您需要在最后一行之后提供换行符
所以只需键入Enter(假设您有一个声明了main方法的openfile类,那么这应该可以工作:
jar cvef MyJar.jar openfile openfile.class
如果您已经有清单并希望包含它,请尝试以下操作:
jar cvmf MyJar.jar manifest.txt openfile.class
清单文件的内容必须如下所示: 清单版本:1.0
主类:openfile
在这两行之后必须留下一个空行,因为不留下它可能会产生问题。Hi,感谢您的响应。尝试了此操作后仍然出现相同的错误。我从头开始。删除了旧的manifest.txt,在新文件中键入该行,然后按Enter按钮(以便光标位于新行上),保存了文件并创建了新的jar文件。没有任何区别。我认为您没有使用
jar cfm MyJar.jar manifest.txt openfile.class openfile.java
u应该使用m选项,否则它将提供一个没有类定义的默认清单文件。我再次检查了..我工作正常..u r缺少m选项Hi,尝试了两个版本此答案无效。您好,尝试了此答案,但仍然存在相同的问题。如果您查看上面的两个答案,它似乎不起作用。我的系统是否可能存在配置问题?请尝试提取文件并查看内容。内容必须是:1)包含manifest.txt文件的Meta Inf文件夹2)和otherfile.class文件(meta-inf文件夹外)如果存在,它应该工作。HI Logan,提取jar文件,它包含openfile.class文件和meta-inf文件夹,meta-inf文件夹包含清单文件,清单文件包含以下内容(超过3行):清单版本:1.0创建人:1.6.0_21(Sun Microsystems Inc.)主类:openfile,但我仍然收到相同的错误。我的java配置是否可能有问题?我不确定java配置。删除由……….创建的行,并确保主类行后有一个空行。如果该空行不存在,jar将无法工作。(我说的空行是指,在主类之后转到第行并按enter键一次)。祝你好运。另外,我的清单文件扩展名是.MF,请尝试更改它,如果它有效,请告诉我。