java - 如何将新的 list 注入(inject)到现有的小程序 jar 中

标签 java jar applet manifest

我有一个已经运行多年的网站 (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 文件:comMETA-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/

相关文章:

java - 当我从 test.java 文件运行时,JUnit 测试不会运行

带有小程序的 Java ProcessBuilder

java - 执行任务时如何将变量写入gradle属性文件?

java - 网络上单台机器的多套接字客户端

java - 从字符串中提取多个相同的字符串

java - jar 文件无法正常工作?

java - 运行.jar打包的.exe

java - 访问 Jar 中的 .jpg 文件

java - 小程序 - 无法写入文件

java - 如何在单击按钮时关闭小程序