java Glassfish3+Webstart+JNLP不会启动
我在运行Glassfish 3.3.1的jnlp(webstart)时遇到问题。控制台显示:
java.io.FileNotFoundException: http://localhost:8080/myapp/server
jnlp代码库设置如下:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost:8080/myapp">
<information>
<title>My App </title>
<vendor>IT Solutions</vendor>
<icon href="address.gif"/>
<description>My App</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+"/>
<jar href="proweb.jar"/>
<jar href="commons-logging-1.0.jar"/>
<jar href="commons-discovery.jar"/>
<jar href="axis.jar"/>
<jar href="jaxrpc-api-osgi.jar"/>
<jar href="javax.servlet.jar"/>
<jar href="swingx-all-1.6.3.jar"/>
<jar href="my_app.jar"/>
</resources>
<application-desc
name="MatrixApplet"
main-class="com.myapp.client.MyApplet"
width="800"
height="600">
<argument>http://localhost:8080</argument>
<argument>/myapp/server</argument>
<argument>http://localhost:8080/myreport/jsp/Launch.jsp</argument>
</application-desc>
</jnlp>
下载JAR并引发异常。我无法使用调试器,因为启动失败,控制台中出现上述错误消息
到现在为止,这辆车一直运转良好。如果发生任何变化,我无法确定会发生什么变化。我使用ant构建各种工件,构建过程中没有任何更改。xml(如果需要,可以发布)。另外,我在bin下的compiled classes文件夹中看到一个大的olbrick颜色X(不是经常提到的简单的红色图标)。我在Eclipse站点上找不到该图标的含义
我还尝试在命令行上运行MyApplet,但得到以下堆栈跟踪:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jnlp/UnavailableServiceException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: javax.jnlp.UnavailableServiceException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
还有一件事。在部署EAR文件之前,我删除了glassfish3/glassfish/domains/domain1/applications/dir下的所有内容。那么糟糕吗
这里有人建议使用glassfish的独立实例。我也试过了
最后一件事:在浏览器中,以下两个URL给出http-404(未找到)
http://localhost:8080/myapp/server
如果我给 http://localhost:8080/myapp/proweb.jar
jar已下载
有什么帮助吗? 谢谢你
# 1 楼答案
jar签名有问题。使用jws时,控制台中的错误消息完全具有误导性。当双击jnlp文件(Windows7)时,真正的错误被暴露了出来