我一直在使用url参数将参数传递给.jar应用程序的main方法。在Windows 7上更新到最新的jre 7u7后,启动文件时Java-web-start启动程序崩溃。
(JNLP download-servlet和jsp-page解析url-parameters并在参数中进一步输入)
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>
所以这可能是也可能不是错误,
Q1:我是否以正确的方式使用了href属性?
Q2:如何解决问题的任何聪明的想法?
答案 0 :(得分:7)
我今天遇到同样的问题。我没有在网上找到任何东西,但我试图更换'?'使用HTML实体'&amp;#063;'它有效。
答案 1 :(得分:3)
Oracle Bug数据库at中已添加此问题:
答案 2 :(得分:1)
我已经找了很久这个答案,从来没有得到具体的解决方案。所以在这里我最终解决了它。我将在下面提出解决方案。
当前情况:有一个简单的java应用程序从带有参数的浏览器启动。现有的路由是浏览器 - &gt; index.html - &gt;调用我的jnlp文件 - &gt;调用我的java类的main方法。
需要的情况:现在用户会发送参数说明,浏览器中的用户名一直发送到java类的main方法。
解决方案:
按如下方式更改index.html:
将函数getUrlParameters()(google it)添加到index.html的javascript部分
使用调用usernameParam = getUrlParameters(&#34;用户名&#34;,&#34;&#34;,true)获取用户名的值
创建一个新的jsp文件(这是必须的),如:
<%@ 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>
一旦形成此URL,您将发送至: IFrameDoc.location.replace(URL);在同一index.html
您将在main方法的String [] args中获取传递的用户名值。所以现在你可以检查param值是否存在,如果存在,用jsp文件形成URL或者直接继续使用旧的jnlp文件。