【问题标题】:Can't create executable jar file with Terminal无法使用终端创建可执行 jar 文件
【发布时间】:2018-11-06 12:46:02
【问题描述】:

我尝试创建一个简单的可执行 jar 文件。我的步骤是:

Test.java

public class Test{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

终端:

javac Test.java

产生Test.class

检查:

java Test  
Hello World

创建 manifest.mf 文件:

Main-Class: Test

然后

jar -cfmv Test.jar manifest.mf Test.class   
added manifest  
adding: Test.class(in = 413) (out= 287)(deflated 30%)

终于

java -jar Test.jar  
no main manifest attribute, in Test.jar

我按照 Katanas 的所有步骤回答这里:How to create a .jar file using the terminal

更新:

按照 ScaryWombat 的建议,我解压缩了 jar 文件:

ls -alR  
.:  
total 16
drwxrwxr-x 3 infiniteZero infiniteZero 4096 May 28 02:25 .
drwxrwxr-x 4 infiniteZero infiniteZero 4096 May 28 02:26 ..
drwxrwxr-x 2 infiniteZero infiniteZero 4096 May 28 02:19 META-INF
-rw-rw-r-- 1 infiniteZero infiniteZero  413 May 28 01:50 Test.class

./META-INF:
total 12
drwxrwxr-x 2 infiniteZero infiniteZero 4096 May 28 02:19 .
drwxrwxr-x 3 infiniteZero infiniteZero 4096 May 28 02:25 ..
-rw-rw-r-- 1 infiniteZero infiniteZero   94 May 28 02:19 MANIFEST.MF

cat META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Main-Class: Test.class
Created-By: 9-internal (Oracle Corporation)

【问题讨论】:

  • 谢谢,我添加了一个新行,但这无济于事,即我收到相同的错误消息。
  • jar 文件基本上是一个 zip 文件,所以重命名它并在您最喜欢的 zip 客户端中打开它。内容是否符合预期?
  • @ScaryWombat 我用信息更新了帖子。我认为它看起来应该是。此外,我尝试切换扩展名,但仍然抛出相同的错误。
  • 经过进一步检查,似乎在清单条目中添加了一个 .class

标签: java jar terminal


【解决方案1】:

在清单末尾添加一个空行,重新编译并运行。而且您提供给编译器的清单必须是 UTF-8

或:

  • 在总指挥官中打开罐子位置
  • 点击jar文件,按Ctrl+PageDown
  • META-INF -> 右键单击​​清单并点击编辑
  • 在清单末尾添加一个空行
  • 保存/退出并运行 java -jar Test.jar

【讨论】:

  • OP 声明在清单文件末尾添加换行符没有帮助。
  • 好的,但他没有尝试直接在jar中修复它并重新运行
  • 我认为没有必要对此进行否决,他还有其他解决方案以及添加换行符。
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 2023-03-05
  • 2018-08-16
相关资源
最近更新 更多