我有看起来像这样的文件夹:
foo/
Bar.java
Bar.class
Foo.java
Foo.class
manifest.mf
Run Code Online (Sandbox Code Playgroud)
.java 文件都在一个名为 x 的包中:
package x;
Run Code Online (Sandbox Code Playgroud)
我生成 .class 文件:
javac foo/*.java
Run Code Online (Sandbox Code Playgroud)
然后我尝试打包为可运行的 jar 格式:
jar cmf foo.jar foo/manifest.mf foo/*.class
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
java.io.IOException: line too long
at java.base/java.util.jar.Attributes.read(Attributes.java:381)
at java.base/java.util.jar.Manifest.read(Manifest.java:228)
at java.base/java.util.jar.Manifest.<init>(Manifest.java:80)
at java.base/java.util.jar.Manifest.<init>(Manifest.java:72)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:264)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1669)
Run Code Online (Sandbox Code Playgroud)
manifest.mf 的内容只是:
Main-Class: x.Bar
Run Code Online (Sandbox Code Playgroud)
它编译时javac不确定发生了什么,或者为什么它不喜欢清单文件,有人知道吗?
我需要将使用 Eclipse 的 JavaFX SDK 16 和 Java SE-15 制作的项目发送给我的朋友,但是当我尝试导出它时,我很惊讶 Eclipse 没有将 VM 参数插入到导出的文件中:

正如您所知,从 JavaFX SDK 10 开始,JavaFX 库不再是 Java SE 的一部分,因此我们需要通过 VM 参数告诉 Eclipse 在哪里可以找到它们,简而言之,这些 VM 参数对于运行我的程序非常重要。
我已经知道我可以在使用提示命令打开它时插入这些参数,但是有没有更简单的方法?只需单击导出的文件?