我有一个具有codebase =“$$ context”的JNLP
在签署JAR之前,我通过将JNLP作为JNLP-INF / APPLICATION.JNLP放入JAR来签署JNLP。
启动应用程序时,我得到“字段代码库在签名的启动文件中有一个无效值:$$ context”。
在浏览器中启动的主要JNLP中的$$上下文被替换为ok并且有效。签名的JAR文件中的jnlp显然没有被替换,因此无效。我如何协调这个?
由于
答案 0 :(得分:0)
APPLICATION.JNLP不应包含codebase =“$$ context”。 它必须包含确切的代码库。 (见jnlp specification)
然而,有一种情况是代码库是动态的。在这种情况下,您应该使用APPLICATION_TEMPLATE.JNLP并在codebase属性中加上'*'。
$$上下文由JNLPDownloadServlet使用,它在运行时生成jnlp,但是对于签名的JNLP,这是非常有问题的,因为生成的jnlp必须完全与签名中的相同jar(除了'*')。
解决方法是使用一个servlet从签名的jar中提取APPLICATION_TEMPLATE.JNLP,用正确的代码库替换'*',并将其返回给浏览器。