奇怪的Java Webstart JNLP异常

3

我有一个使用简单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>

非常感谢您的帮助和指导,如有进一步需要,请不吝赐教。

1
我认为我们需要看一下你的JNLP文件。 - qbert220
您能否把JNLP内容粘贴一下? - Rekin
这是完整的 XML 内容吗? - Bitmap
我仍然建议看看Janela。它是一个非常有用的应用程序。 - Andrew Fielden
4个回答

3
这行代码的意思是:
<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/>

但这可能是一个编辑错误。

我注意到了第一个问题并进行了更改,但仍然出现错误。我没有注意到第二个问题。我会尝试进行更改并运行它(现在离那台机器有些远)。谢谢。 - vpram86

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

应该是...

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

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


我试图删除名称和引用:D 哈哈。是的,我在实际文件中有一个引用。谢谢! - vpram86
1
由于属性或值甚至可能包含无效字符,从而使JNLP无效并导致启动失败,因此我将不再处理呈现“私有化”或“经过消毒”的JNLP的问题。请确保使用JaNeLA验证实际 JNLP。 - Andrew Thompson
很抱歉要更改名称,我没有选择。但是谢谢,我从这里开始找到了问题所在。第一个扩展名jsp没有返回,而是某种方式返回了主页。已经修复并且运行得很好。再次感谢。 - vpram86
关于名称 - 有时候就是这样。很高兴听到你解决了它。 :-) - Andrew Thompson

2

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


1

也许你有一个XML注释或者悬挂引号字符"之类的东西?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接