如何将新清单注入到applet的现有jar中

时间:2014-01-28 16:53:17

标签: java jar applet manifest

我有一个已经工作多年的网站(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

然后将清单注入我的罐子

  • 我将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:源只包含目录.class中的com/mycompany/...个文件和清单在名为META-INF的目录中。我尝试在网上搜索,但我没有太多运气如何从终端这样做。

所以也许有人可以告诉我如何用终端创建一个带有清单的jar。我知道命令:jar cvf MyGreat.jar MyGreat

但是如何获得清单呢?我在哪里将清单放在.class文件中,以便最后得到一个包含目录的jar文件:comMETA-INF

1 个答案:

答案 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换行符*延续

如果添加空格,则按预期工作。