奇怪的Java Webstart JNLP异常



我有一个使用简单JNLP的java webstart应用程序。最近我在启动它时遇到了奇怪的问题。我以前从来没有遇到过这个问题,我很确定没有任何内容得到修改。当我试图启动这个应用程序时,我得到这个错误。

WARNING: <> tag is not closed correctly Exception parsing xml at line 33
at com.sun.deploy.xml.XMLParser.parseXMLElement(Unknown Source)
at com.sun.deploy.xml.XMLParser.parseXMLElement(Unknown Source)
at com.sun.deploy.xml.XMLParser.parse(Unknown Source)
at com.sun.javaws.jnl.XMLFormat.parse(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.LaunchDownload.downloadExtensionsHelper(Unknown Source)
at com.sun.javaws.LaunchDownload.downloadExtensions(Unknown Source)
at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

正如你所看到的,它没有给出哪个标签有问题。就我所知;第33行没有问题。它有一个简单的标签<argument>session_token_here</argument>

更新:这是JNLP文件;

  <jnlp spec="1.0+" codebase="https://MASKHOST:5467/"
 href="https://MASKHOST:5467/myjnlp.jnlp?session=rO0ABXNyADpjb20ud2lseS5pbnRyb3Njb3BlLnNwZWMuc2VydmVyLmJlYW5zLnNlc3Npb24uU2Vzc2lvblRva2Vu9ef0qNvv5yoMAAB4cHNyADBjb20ud2lseS5pc2VuZ2FyZC5wb3N0b2ZmaWNlLlBvc3RPZmZpY2VTcGVjaWZpZXL69Qzv1IsXcgwAAHhwdw4ABUxvY2FsAAVMb2NhbHh3CDWNLwuY3RbfeA%3d%3d&myauth=true">
 <information>
     <title>App Title</title>
     <vendor>Company</vendor>
     <homepage href="null"/>
     <description>Product Name</description>
     <icon href="https://MASKHOST:5467/images/logo.png"
 kind="default"/>   </information>   <security>
     <all-permissions/>   </security>   <update check="timeout"
 policy="always"/>   <resources>
     <jar
 href="https://MASKHOST:5467/product/plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar"
 download="eager" main="false"/>
     <extension href="https://MASKHOST:5467/jnlp/productplugins.jsp"
 name="Component name"/>
     <extension href="https://MASKHOST:5467/jnlp/platformplugins.jsp"
 name="Core Plugins"/>
     <property name="osgi.instance.area" value="@user.home/Application
 Data/company/product/component"/>
     <property name="osgi.configuration.area"
 value="@user.home/Application Data/company/product/component"/>
     <property name="eclipse.product" value="osgiproductname"/>
     <java java-vm-args="-Xms64m -Xmx256m -Dsun.java2d.noddraw=true"
 href="http://java.sun.com/products/autodl/j2se"
 version="1.6*&1.6.0_05+"/>
     <property name="sun.java2d.noddraw" value="true"/>   </resources> 
 <application-desc
 main-class="org.eclipse.equinox.launcher.WebStartMain">
     <argument>-noexit</argument>
     <argument>-clean</argument>
     <argument>-loginhost</argument>
     <argument>MASKHOST</argument>
     <argument>-loginport</argument>
     <argument>6785</argument>
     <argument>-session</argument>
 <argument>rO0ABXNyADpjb20ud2lseS5pbnRyb3Njb3BlLnNwZWMuc2VydmVyLmJlYW5zLnNlc3Npb24uU2Vzc2lvblRva2Vu9ef0qNvv5yoMAAB4cHNyADBjb20ud2lseS5pc2VuZ2FyZC5wb3N0b2ZmaWNlLlBvc3RPZmZpY2VTcGVjaWZpZXL69Qzv1IsXcgwAAHhwdw4ABUxvY2FsAAVMb2NhbHh3CDWNLwuY3RbfeA==</argument>
     <argument>-myauth</argument>
     <argument>true</argument>
   </application-desc>
 </jnlp>
<extension href="https://MASKHOST:5467/jnlp/productplugins.jsp"
 name="Component name/>
应该. .

<extension href="https://MASKHOST:5467/jnlp/productplugins.jsp"
 name="Component name"/>

但是使用JaNeLA检查JNLP并修复发现的任何错误。

这一行:

<java java-vm-args="-Xms64m -Xmx256m -Dsun.java2d.noddraw=true" href="http://java.sun.com/products/autodl/j2se" version="1.6*&1.6.0_05+"/>

有一个嵌入的&,应该像这样转义:

<java java-vm-args="-Xms64m -Xmx256m -Dsun.java2d.noddraw=true" href="http://java.sun.com/products/autodl/j2se" version="1.6*&amp;1.6.0_05+"/>

第一行也有一个未转义的&

下一行缺少结束双引号:

 <extension href="https://MASKHOST:5467/jnlp/productplugins.jsp" name="Component name/>

但这可能是编校错误

如果没有任何JNLP文件,我可以建议使用Janela JNLP验证器工具

也许你有一个xml注释或挂引号字符"或什么?

最新更新