当我尝试动态分发 jar/jnlp 时,我遇到了几个问题。我的所有文件都是使用http://www.mywebsite.com/ServeFile?name=xxx为文件 xxx 动态提供的。我可以正确下载文件。
当我将 jnlp 的链接放入浏览器并下载时,javaws 出现错误,显示找不到 jar 文件。GAE 日志文件显示 javaws 尝试加载/ServeFile.pack.gz?name=test__V1.0.jar
,因此没有由 ServeFile servlet 提供服务,而是由 / 提供服务(这是另一个 servlet)
这是我的 jnlp 文件部分内容:
<resources>
<j2se version="1.6+"/>
<jar href="ServeFile?name=test.jar" main="true" version="1.0"/>
<property name="jnlp.packEnabled" value="true"/>
<property name="jnlp.versionEnabled" value="true"/>
</resources>
我的问题是 javaws 如何将 .pack.gz 放入 url 的中间,而不仅仅是在请求中放入 AcceptEncoding?动态服务 jnlp 和 jar 的正确方法是什么?
更新
使用“静态”类型链接(例如http://website.com/path/file.jar而不使用?file=file.jar )时问题已解决。我还有一个问题:
新问题
JavaWS 有时会放置?version-id=1.0并且我的动态 url 也使用类似的模式,例如?folder=root&user= guest。所以 version-id 会变成1.0?folder=root。
如果我把&folder=root&user=guest它会工作,但 javaws 有时会请求myjar __ V1.0.jar& folder=root所以现在文件名有myjar _ V1.0& folder=root这是错误的。这是不一致的。
暂时,我可以只解析这个 version-id 来查看它是否包含问号。我希望有更好的解决方案。