当前位置: 首页 > 知识库问答 >
问题:

launch4j中的.exe文件不像java文件那样工作。我是不是漏掉了什么?

孔经武
2023-03-14

作为刚接触java并将程序与代码捆绑的新手,我能够成功地获得运行一个简单的新HelloWorld java文件的正确输出。因此,我相信java文件在编译为类文件或随后运行方面没有问题,并且我在java工具包中拥有创建可执行文件所需的所有文件。但是,我不确定是否正确地使用launch4j来获取.exe,无论是通过设置.jar还是通过创建一个正确的.xml文件的过程。

C:\JavaTest>jar cvfm HelloWorld.jar HelloWorld.class
java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:406)
        at java.util.jar.Manifest.read(Manifest.java:234)
        at java.util.jar.Manifest.<init>(Manifest.java:81)
        at java.util.jar.Manifest.<init>(Manifest.java:73)
        at sun.tools.jar.Main.run(Main.java:176)
        at sun.tools.jar.Main.main(Main.java:1288)

C:\JavaTest>jar cvf HelloWorld.jar HelloWorld.class
added manifest
adding: HelloWorld.class(in = 426) (out= 289)(deflated 32%)

共有1个答案

宋昊然
2023-03-14

jar cvfm中的'm'代表manifest,暗示您将提供一个文件作为参数,即manifest。f代表:您将指定文件名。

因此,helloworld.jar是f的参数,helloworld.class是m的参数。显然,您的类文件不是有效的清单文件,因此会出现错误。

通常,使用构建工具来制作JAR,例如maven或Gradle。您需要一个manifest来拥有一个Main-Class属性,您需要一个Main-Class属性来创建一个可运行的jar,您需要一个可运行的jar来launch4j-ify它。

Main-Class: com.foo.thisIsAPackage.YourMainClass

然后:

jar cvfm HelloWorld.jar MANIFEST.MF YourMainClass.class

请注意,我非常肯定你必须有一个包裹,否则这是行不通的。

 类似资料:
  • 我已经尝试了一段时间让smoothScrollToPositionFromTop()工作,但它并不总是滚动到正确的位置。 我有一个ListView(有10个条目)的布局,边上有10个按钮,所以我可以滚动到列表中的每个条目。通常,当我向后或向前滚动一个位置时,效果很好,但是当我试图向后或向前滚动超过3个位置时,ListView并不完全在所选位置结束。当它失败时,它通常会减少0.5到1.5个项目,并且

  • 有一些最初的问题与我的javac.exe不与其他的软件能够编译和运行的代码但我能够得到一个. class和. java的程序所以我想我可以使用启动4j仍然创建应用程序,使其自身正常执行。但是,我不知道为什么产生的. exe没有提供我期望的输出。 我使用了一个您可能知道的指南来学习测试“HelloWorld”程序,因为我是java新手,并将实际代码转换为应用程序。按照这些步骤,我能够开始测试java

  • 我想使用查找从一个集合中获取一些数据并将其放入另一个集合中。 在localfield或foreignfield中写什么都不重要,因为它从player_game_stats中获取所有数据并将其插入player集合中的每个文档中。我想检查localfield和foreignField是否相等,但lookup不检查这一点。我对mongodb使用NoSqlBooster

  • 我使用Eclipse用java编写了一个很酷的程序。当我在eclipse中运行它时,它完全按照预期工作。我将它导出为一个jar文件,这样我就可以使用Launch4j将它转换为一个可执行文件(.exe文件扩展名),我成功地完成了,但是现在当我试图打开可执行文件时,它说程序不兼容。我尝试在命令行编译代码,当我键入“Java计算器”试图运行程序时,它运行得很好。所以我的问题是为什么可执行文件不能工作?任

  • 问题内容: 做什么,并且html文件是什么样的? 我的最终目标是将文本文件中的任意逗号分隔值加载到html文件中(例如)。我只能推断出一个视图是html文件,而回调将该html文件返回。 这是文档:http : //expressjs.com/api.html#res.render。 现在,给出一些示例代码,我发现背景下,有一些关于使用(嵌入的JavaScript)与和。 但是,如果我要补充的话,

  • 我使用launch4j将Java项目的JAR文件包装成一个.exe文件,它在我的开发机器和其他几台计算机上运行良好。但是,一个用户报告他无法在他的计算机上运行.exe文件,弹出的消息告诉他 有趣的是,用户可以在同一台计算机上直接运行JAR文件,可以通过命令行中的调用它,也可以直接在Windows资源管理器中双击JAR文件(或通过快捷方式)。该用户安装了最新的JRE。 我在这里的其他线程上看到,由于