麻烦创建可执行的Java Jar文件

时间:2010-08-16 17:21:42

标签: 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\\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 

知道我做错了吗?

3 个答案:

答案 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

在这两行之后必须留下一个空白行,因为不留下它可能会产生问题。