java - 使用 $$context 签署 JNLP 在 java 7.45 中不起作用

标签 java jnlp

我有一个包含 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/

相关文章:

java - Guava 分离器的图案

java - 对象使用另一个Java类

java - 启用 Spring 的 JAX-WS Web 服务如何获取客户端 ip

java - 从 java webstart 应用程序中的 jar 获取资源

java - 是否可以在 JNLP 文件的 j2se 标记中指定 java 的多个版本?

java - PostgreSQL View 读取另一个表,转换数据并返回结果

java - 从 Windows 命令行运行时如何请求 JVM 垃圾回收(不是从代码)

java - JNLP:无法将参数传递给 main

java - 自动化 webstart 过程

java - 已签名的 jar 文件——jnlp 无法提示用户接受证书