我最近整合了一个JWS应用程序,它从动态创建的JNLP文件中获取它的参数(详细信息可以找到here)。除了应用程序忽略我的系统(linux x86_64)上的参数(在没有加载指定数字的情况下启动)之外,这一切都很好。然而,似乎JWS应用程序完全按照我的同事的win_64机器上的预期。这很有趣,因为我无法在另一个类似的win_64上复制他的成功。
为了让事情更令人兴奋,当我下载JNLP文件并在终端上通过javaws运行时,同样的JWS应用程序工作正常(换句话说,不会忽略参数)。
我比较了java.policy和javaws.policy文件,没有区别。 JNLP文件清楚地给出了所有权限,并且jar文件被签名都很好(这不是问题的根源,否则应用程序无法启动,对吧?)。
问题1:那么这个问题可能取决于什么?
编辑:我刚刚设法从一台新的(在这个特殊意义上)win32机器得到了正确的响应,没有任何明显的java更新。 问题2: 是否有javaws的日志文件,我可以检查发生了什么,或者,我可以将启动详细信息发送到控制台,以便我可以创建我自己的自定义日志?
编辑2:顺便说一句,我忘了提到我也在Oracle forums发布了这个问题,我最初可能会提到这个问题,因为它被礼貌地指出了那里。无论如何,在线程上有关于JNLP文件的更多信息,以防它可能是相关的。
编辑3:我开始认为问题可能源自<jnlp>
标记的属性,在生成JNLP文件时。最初jnlp
标签看起来像这样:
<jnlp spec="1.0+" codebase="http://mydomain/myapp/"
href="my.jnlp">
问题在于代码库中声明的目录中没有my.jnlp,而是通过cgi-bin目录中的Perl脚本动态创建JNLP代码并作为输出返回流(我想)。所以我编辑了脚本以生成带有以下标记的JNLP:
<jnlp spec="1.0+" codebase="http://mydomain/myapp/"
href="http://mydomain/cgi-bin/my.jnlp">
这个实验的结果:这次甚至没有GUI启动......
我在Oracle论坛上找到a relevant thread,建议以下列方式定义href
属性:
href="script.jsp?<%=request.getQueryString()%>">
遗憾的是没有解决我的问题。
问题3: 此修改是否也适用于我的情况?在那种情况下怎么样?如果没有任何关于可能导致问题的原因的见解将会受到重视,因为我现在的工作确实陷入僵局
答案 0 :(得分:1)
经过两周的JNLP文件语法和我的CGI脚本的摔跤,我想我终于找到了问题的症结所在。我在这里注意到这一点(冒着看起来自命不凡来回答我自己的问题的风险)以防其他人遇到同样的问题。
href
标签的<jnlp>
属性,在我的情况下显然是不必要的,当删除时,应用程序开始在linux和win系统上按预期工作。我不是100%确定这是否是确切的原因但我的理解是,由于jnlp语法是从脚本生成并直接返回给用户而不是文件系统中某处的jnlp文件,href
属性是指向错误的地方,可能会导致某种冲突在不同的操作系统中以不同的方式处理。
答案 1 :(得分:0)
确保未缓存JNLP文件。即,每次尝试新的东西时,是否重命名/重新定位了JNLP文件?
关于您的更新,
我想到的唯一一点就是你需要确保你的脚本以正确的mime类型响应:application / x-java-jnlp-file
也就是说,从您的cgi脚本中,您必须提供HTTP标头字段
Content-Type: application/x-java-jnlp-file