的Java应用WS忽略参数零星

问题描述:

我最近把一个JWS应用程序,它得到它是从一个动态创建的JNLP文件参数(细节可以发现here)。除了应用程序在我的系统(linux x86_64)上忽略参数(开始时没有加载指定的数字)之外,这一切都很好。然而,JWS的应用似乎与我的同事的win_64机器完全相同。这很有趣,因为我不能在另一场类似的比赛中复制他的成功。的Java应用WS忽略参数零星

为了让事情更加令人兴奋,当我下载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,而不是JNLP代码由动态创建一个Perl脚本在cgi-bin目录中并作为输出流返回(我认为)。所以,我编辑的脚本来生成具有以下标签的JNLP:

<jnlp spec="1.0+" codebase="http://mydomain/myapp/" 
    href="http://mydomain/cgi-bin/my.jnlp"> 

这个实验的结果是:甚至没有GUI启动这个时候...... 我发现a relevant thread在Oracle论坛,在那里被告知在以下的时尚定义href属性:

href="script.jsp?<%=request.getQueryString()%>"> 

不幸的是没有解决我的问题。

问题3:这个修改也适用于我的情况吗?在那种情况下如何?如果没有任何关于什么可能导致问题的见解将被认真赞赏,因为我现在真的处于我的工作僵局

两个星期的JNLP文件的语法和我的CGI脚本摔跤后,我想我终于找到了问题的症结所在。如果有人遇到同样的问题,我在这里注意到这个问题(冒着看起来自命不凡的风险来回答我自己的问题)。

href<jnlp>标记的属性,在我的情况下显然是不必要的,当被移除时,应用程序开始按照预期在linux和win系统上工作。我不是100%确定这是否是确切的原因,但我的理解是,由于jnlp语法是从脚本生成的并直接返回给用户而不是文件系统中的某个jnlp文件,因此href属性指向错误并且可能会导致某种冲突在不同的操作系统中以不同的方式处理。

+0

我有这个问题了几个月。不时传递args没有被传入jar文件最后这个问题解决了,谢谢! – Aitor 2015-03-25 09:40:54

确保JNLP文件没有被缓存。也就是说,每次你尝试新的东西时,你是否重命名/重定位了JNLP文件?


关于你的更新,
这使我心中唯一的铃声是,你需要确保你的脚本与正确的MIME类型进行响应:应用程序/ x-java的JNLP文件

也就是说,从你的CGI脚本,你必须提供HTTP报头字段

Content-Type: application/x-java-jnlp-file 
+0

由于JNLP文件是由脚本生成的,因此重命名存在一些问题,但我试图在新计算机上运行应用程序(阅读:从未暴露给应用程序),甚至重新启动了浏览器/机器几次。这应该有效地清空缓存权利? – posdef 2010-10-29 08:02:56

+0

嗯..是的。那真的很奇怪。你应该做一个最小的测试用例失败并发布你的特定的操作系统/ Java版本和例子 – aioobe 2010-10-29 08:33:38

+0

是的,问题是什么构成最小情况? – posdef 2010-10-29 08:50:32