Java jnlp href属性中的url参数

Java jnlp href属性中的url参数,java,jnlp,java-web-start,Java,Jnlp,Java Web Start,我一直在使用url参数向.jar应用程序的主方法传递参数。在windows 7上更新到最新的jre 7u7后,Java web start launcher在启动文件时崩溃 (JNLP下载servlet和jsp页面解析url参数,并将它们进一步输入参数) jsp的有趣部分 <jnlp spec="6.0+" codebase="http://localhost:8080/" href="myfile.jnlp?username=charles"> ... <ap

我一直在使用url参数向.jar应用程序的主方法传递参数。在windows 7上更新到最新的jre 7u7后,Java web start launcher在启动文件时崩溃

(JNLP下载servlet和jsp页面解析url参数,并将它们进一步输入参数)

jsp的有趣部分

<jnlp spec="6.0+" codebase="http://localhost:8080/" href="myfile.jnlp?username=charles">
    ...
    <application-desc main-class="MyMain">
        <argument><%=request.getParameter("username")%></argument>
    </application-desc>
</jnlp>

...
所以这可能是个bug也可能不是

问题1:我是否以正确的方式使用了href属性


问题2:有什么好主意可以解决这个问题吗?

我今天也遇到了同样的问题。我在网上没有找到任何东西,但我尝试用HTML实体替换“?”?;'这个问题已经被添加到Oracle Bug数据库中:

我寻找这个答案已经有一段时间了,但一直没有找到具体的解决方案。所以我最终解决了这个问题。我将在下面提出解决办法

当前情况:有一个简单的java应用程序可以从带有参数的浏览器启动。现有路由是浏览器-->index.html-->调用我的jnlp文件-->调用我的java类的主方法

需要的情况:现在用户将发送参数,比如说,用户名,从浏览器发送到java类的主方法

解决方案:

  • 不要浪费时间试图只更改jnlp文件
  • 将index.html更改如下:

  • 将函数getUrlParameters()(google it)添加到index.html的javascript部分

  • 通过调用usernameParam=getUrlParameters(“username”,true)获取用户名的值

  • 形成这样的形式 URL='nameOfYourJSPFile.jsp?username='+usernameParam
  • 创建一个新的jsp文件(这是必须的),如:

    
    你的资源。。。
    
  • 形成此URL后,您将发送至: IFrameDoc.location.replace(URL);在同一index.html中


您将在main方法的字符串[]args中获得传递的用户名值。因此,现在您可以检查param值是否存在,如果存在,请使用jsp文件形成URL,或者直接继续使用旧的jnlp文件。

刚刚测试过,jws启动器在我放置一个?在属性值中。所以我认为第一季度的答案是肯定的,我不完全确定,但是有很多JWS应用程序。这和您描述的差不多——在URL中传递参数。尝试使用。我不确定servlet能做什么。Jawa web start launcher在任何属性值中出现?-标记时就会崩溃。我们花了很多时间研究这个问题,直到我们研究了线程。当我们将jnlp文件保存为UTF-8编码时,它开始工作。但默认情况下,JNLP以ansi编码方式下载,并且在此次更新后从未工作过。进一步调查后,差异似乎在于UTF-8“编码”文件与ansi文件的不同之处在于仅在存在BOM的情况下。如果我们删除BOM表,当从命令行调用时,带有问号的JNLP文件将失败。嘘!此错误不可用。(可能从公众视野锁定)
<%@ page contentType="application/x-java-jnlp-file" %>   
<%@ page session="true" %>   
<%   
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 
// Getting the URL parameters from the request
final String USERNAME_PARAM = "username";
String paramUsername = request.getParameter(USERNAME_PARAM);
%> 
<?xml version="1.0" encoding="iso-8859-1"?>
<jnlp spec="1.0+" codebase="http://localhost:8080/" href="<nameOfYourJSPFile>.jsp?    <%=USERNAME_PARAM + "=" + paramUsername%>">
<information>
</information>
<security>
    <all-permissions/>
</security>

<resources>
           Your resources...
</resources>

<application-desc main-class="Complete.package.yourClassNameContainingMain">
     <argument><%=paramUsername%></argument>
</application-desc>
</jnlp>