我有一个包含 codebase="$$context"的 JNLP
在签署 JAR 之前,我会将 JNLP 作为 JNLP-INF/APPLICATION.JNLP 放入 JAR 中,从而对 JNLP 进行签名。
启动应用程序时,我收到“字段代码库在签名的启动文件中具有无效值:$$context”。
在浏览器中启动的主 JNLP 中的 $$ 上下文可以正常替换并且有效。签名的 JAR 文件中的 jnlp 显然不会被替换,因此无效。我该如何协调这个问题?
谢谢
最佳答案
APPLICATION.JNLP 不应包含 codebase="$$context"。 它必须包含确切的代码库。 (参见jnlp specification)
但是,在某些情况下代码库是动态的。在这种情况下,您应该使用 APPLICATION_TEMPLATE.JNLP 并在代码库属性中添加“*”。
$$context 由 JNLPDownloadServlet 使用,该 JNLPDownloadServlet 在运行时生成 jnlp,但对于签名的 JNLP 来说,这是相当有问题的,因为生成的 jnlp 必须完全与签名中的 jnlp 相同。 jar(除了“*”)。
对此的解决方案是使用一个 servlet 从签名的 jar 中提取 APPLICATION_TEMPLATE.JNLP,用正确的代码库替换“*”,然后将其返回到浏览器。
关于java - 使用 $$context 签署 JNLP 在 java 7.45 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20056838/