我有一个已经工作多年的网站(2)。但是自从新的java限制(2014年1月)以来,我的applet被阻止了。所以在做了一些阅读之后,似乎我所要做的就是更改清单文件;我甚至不需要重新编译代码。 (如果我错了,请纠正我。)
所以我创建了以下清单文件
Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox
Application-Name: MyFarmingBusiness
Application-Library-Allowable-Codebase:http://mycompany.com/version_4/myapplet/
Caller-Allowable-Codebase:www.mycompany.com
Codebase: www.mycompany.com
然后将清单注入我的罐子
结果,我收到以下错误
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:410)
at java.util.jar.Manifest.read(Manifest.java:199)
at java.util.jar.Manifest.<init>(Manifest.java:69)
at sun.tools.jar.Main.run(Main.java:172)
at sun.tools.jar.Main.main(Main.java:1177)
有谁知道如何解决这个问题?
另一种方法可能是重新创建jar。 所以我做了以下
jar xf MyGreat.jar
.class
中的com/mycompany/...
个文件和清单在名为META-INF
的目录中。我尝试在网上搜索,但我没有太多运气如何从终端这样做。所以也许有人可以告诉我如何用终端创建一个带有清单的jar。我知道命令:jar cvf MyGreat.jar MyGreat
但是如何获得清单呢?我在哪里将清单放在.class
文件中,以便最后得到一个包含目录的jar文件:com
和META-INF
答案 0 :(得分:1)
冒号后缺少空格。这应该有效:
Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox
Application-Name: MyFarmingBusiness
Application-Library-Allowable-Codebase: http://mycompany.com/version_4/myapplet/
Caller-Allowable-Codebase: www.mycompany.com
Codebase: www.mycompany.com
请注意 Application-Library-Allowable-Codebase:和 Caller-Allowable-Codebase:条目后的附加空间。
根据jar file specification,值定义为:
值:SPACE * otherchar换行符*延续
如果添加空格,则按预期工作。