1

我有以下 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

但是,当我尝试使用

java -jar MyJar.jar

我收到以下错误消息:

Failed to load Main-Class manifest attribute from MyJar.jar

manifest.txt 的文本如下:

Main-Class: openfile 

知道我做错了什么吗?

4

3 回答 3

2

我得到了我相信的问题。

在您的 manifest.txt 文件中

manifest.txt 的文本如下:

Main-Class: openfile 

您需要在最后一行之后提供换行符

因此,只需在此行之后输入 Enter (<-)(回车)。

Main-Class: openfile 

请参阅sun 文档。这是摘录。

警告:文本文件必须以换行符或回车符结尾。如果最后一行没有以新行或回车结束,则不会正确解析。

我对此进行了验证,并且可以正常工作。希望这可以帮助 。

于 2010-08-16T17:29:41.547 回答
0

您的清单文件的内容必须是这样的:

清单版本:1.0
主类:openfile

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

于 2010-08-17T02:03:51.267 回答
0

假设您有一个声明了 main 方法的类 openfile,那么这应该可以工作:

jar cvef MyJar.jar openfile openfile.class

如果您已经有一个清单并想要包含它,那么试试这个:

jar cvmf MyJar.jar manifest.txt openfile.class
于 2010-08-16T17:57:19.363 回答