我有一个已经运行多年的网站 (2)。但自从新的java限制(2014年1月)以来,我的小程序被阻止了。因此,在阅读了一些内容之后,似乎我所要做的就是更改 list 文件;我什至不需要重新编译代码。 (如果我的理解有误,请指正。)
所以我创建了以下 list 文件
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
然后将 list 注入(inject)我的 jar
- 我将 manifest.txt 文件保存在与 jar 相同的目录中
- 然后在 mac osx 终端中输入:`jar cfm MyGreat.jar manifest.txt
结果,我收到以下错误
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
- 但是,我已经很久没有这样做了,我不知道如何从源代码重建jar:源代码仅包含
com目录中的
以及名为.class
文件/mycompany/...META-INF
的目录中的 list 。我尝试在线搜索,但我对如何从终端执行此操作没有太多运气。
所以也许有人可以告诉我如何从终端创建带有 list 的 jar。我知道命令:jar cvf MyGreat.jar MyGreat
但是我如何获取 list 呢?我将 .class
文件的 list 放在哪里,以便最终我得到一个包含目录的 jar 文件:com
和 META-INF
最佳答案
冒号后面缺少一个空格。这应该有效:
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 ,值定义为:
value: SPACE *otherchar newline *continuation
如果添加空格,它将按预期工作。
关于java - 如何将新的 list 注入(inject)到现有的小程序 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21411834/