无法使用 jar 命令构建 - java.io.IOException: 行太长
Cannot build with jar command - java.io.IOException: line too long
我有这样的文件夹:
foo/
Bar.java
Bar.class
Foo.java
Foo.class
manifest.mf
.java 文件都在名为 x:
的包中
package x;
我生成 .class 文件:
javac foo/*.java
然后我尝试打包成可运行的 jar 格式:
jar cmf foo.jar foo/manifest.mf foo/*.class
但是我得到这个错误:
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)
manifest.mf内容为:
Main-Class: x.Bar
它使用 javac
编译,所以不确定发生了什么,或者为什么它不喜欢清单文件,有人知道吗?
正确的命令行是
jar -c -m foo/manifest.mf -f foo.jar foo/*.class
我认为 "jar cmf" 命令的第一个参数应该是要显示的路径。
如文档 https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html
中所述
你能尝试用下一个命令构建它吗?
jar cmf foo/manifest.mf foo.jar foo/*.class
我有这样的文件夹:
foo/
Bar.java
Bar.class
Foo.java
Foo.class
manifest.mf
.java 文件都在名为 x:
的包中package x;
我生成 .class 文件:
javac foo/*.java
然后我尝试打包成可运行的 jar 格式:
jar cmf foo.jar foo/manifest.mf foo/*.class
但是我得到这个错误:
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)
manifest.mf内容为:
Main-Class: x.Bar
它使用 javac
编译,所以不确定发生了什么,或者为什么它不喜欢清单文件,有人知道吗?
正确的命令行是
jar -c -m foo/manifest.mf -f foo.jar foo/*.class
我认为 "jar cmf" 命令的第一个参数应该是要显示的路径。 如文档 https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html
中所述你能尝试用下一个命令构建它吗?
jar cmf foo/manifest.mf foo.jar foo/*.class