java - 没有主要 list 属性(但我在 jar 中有 list 文件)

标签 java jar executable-jar

注意-我已经解决了这个问题,为了其他人的利益,我会发布答案。 请注意,我确实查看了此错误的其他答案,但它们并未涵盖此处发生的情况。

C:\blah>type a.java
class a { public static void main(String[] args) { } }

编译它

C:\blah>javac a.java

blah 中的文件列表

C:\blah>dir /s/b
C:\blah\a.class
C:\blah\a.java
C:\blah\manifest

我用记事本写的 list 文件

C:\blah>type manifest
Main-Class: a
C:\blah>

创建 jar

C:\blah>jar cvfm asdf.jar manifest -C . .
added manifest
adding: a.class(in = 247) (out= 187)(deflated 24%)
adding: a.java(in = 56) (out= 55)(deflated 1%)
adding: manifest(in = 13) (out= 15)(deflated -15%)

运行 jar

C:\blah>java -jar asdf.jar
no main manifest attribute, in asdf.jar

我看了这个问题的其他答案,他们建议添加一个 list 文件

但是 list 文件在jar里

C:\blah>jar -tf asdf.jar
META-INF/
META-INF/MANIFEST.MF
a.class
a.java
manifest

C:\blah>

最佳答案

当我用记事本写 list 文件时,它的末尾没有换行。这就是导致错误的原因。

Windows 使用 CRLF 作为行分隔符,而 Linux 使用 LF 作为行终止符。所以,当我在记事本中写下这一行时,它的末尾没有 CRLF。

但是 java -jar jarfile.jar 要求 Manifest 在末尾有一个新行(在本例中为 CRLF)。我的行尾什么都没有。

C:\blah>type manifest
Main-Class: a
C:\blah>

创建jar文件

C:\blah>jar cvfm asdf.jar manifest -C . .
added manifest
adding: a.class(in = 247) (out= 187)(deflated 24%)
adding: a.java(in = 56) (out= 55)(deflated 1%)
adding: manifest(in = 13) (out= 15)(deflated -15%)

执行jar

C:\blah>java -jar asdf.jar
no main manifest attribute, in asdf.jar

如我们所见,它失败了,因为 list 文件末尾没有换行

将新行添加到 list 文件的末尾。这也可以在记事本中完成

C:\blah>echo.>>manifest

list 文件的内容

C:\blah>type manifest
Main-Class: a
C:\blah>

运行jar文件

C:\blah>java -jar asdf.jar
no main manifest attribute, in asdf.jar

失败,因为仍然是旧的 jar 文件 ;-)

创建 jar 文件..因为向 list 文件添加了新行

C:\blah>jar cvfm asdf.jar manifest -C . .
added manifest
adding: a.class(in = 247) (out= 187)(deflated 24%)
adding: a.java(in = 56) (out= 55)(deflated 1%)
adding: manifest(in = 15) (out= 17)(deflated -13%)

它运行良好没有错误

C:\blah>java -jar asdf.jar

C:\blah>

关于java - 没有主要 list 属性(但我在 jar 中有 list 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25190921/

相关文章:

java - spring boot应用程序无法从cmd启动如何从cmd启动它

java - Maven - 在同一模块中生成 war 和 fat jar

java - 如何读取内容处置 header 的内容?

java - LatLng 不再在编译器中工作

java - 尝试从 jar 文件加载图标

java - 如何在eclipse中生成java项目的可执行文件

单击按钮后 Java JPanel 似乎不会重新绘制

java - 我如何挂接到 Spring 的 @RequestBody 参数解析以使用请求的主体解析我自己的参数

java - 如何告诉 Glassfish 使用哪个 OSGI 包或根本不使用它

java - IntelliJ IDEA : Jar doesn't load images when run outside of IDE