作者linus (天使不见了)
看板java
标题Re: [问题] Java Web Start 执行 Java 视窗程式的问题
时间Mon Dec 20 13:21:52 2010
※ 引述《linus (天使不见了)》之铭言:
: 请教一下, 我写了一个 JFrame 的Java视窗程式,
: 已封装成 jar档,
: 看一本书上说写一个 .jnlp档案,放在tomcat的web执行目录下,
: 建立一个html档去开启.jnlp,
: jnlp档的内容指定要执行的jar档,
: 我把.jar,.jnlp还有那个html都放在同一个web根目录下,
: 开启html档点那个jnlp的连结後确实启动了java web start,
: 但是却出现错误, "无法启动应用程式"
: 当中有发现有例外讯息,
: java.lang.ClassNotFoundException: TestWindowWs
: at java.net.URLClassLoader$1.run(Unknown Source)
: at java.security.AccessController.doPrivileged(Native Method)
: at java.net.URLClassLoader.findClass(Unknown Source)
: at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
: at java.lang.ClassLoader.loadClass(Unknown Source)
: at java.lang.ClassLoader.loadClass(Unknown Source)
: at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
: at com.sun.javaws.Launcher.run(Unknown Source)
: at java.lang.Thread.run(Unknown Source)
: 这是为什麽呢?
: 我直接用 java -jar 的指令可以执行那一个 .jar档,
: 可是用这种方式就失败了,
: 我把那本书的范例(透过jnlp呼叫.jar)copy到网页根目录去执行也都成功,
: 我以为是我的class没有import java.net 和 com.sun的内容,
: 但是把范例的java档打开看也没有import java.net 和 com.sun 的东西,
: 还请高手指点一下迷津, 谢谢. Orz
: 附上 jnlp档内容...Test04.jar 的main class 是 TestWindowWs
: <?xml version="1.0" encoding="UTF-8"?>
: <!-- JNLP File for Application -->
: <jnlp
: spec="1.0+"
: codebase="http://localhost:8080/JavaWebStart"
: href="JNLPTest.jnlp">
: <information>
: <title>JNLP Test</title>
: <vendor>Linus Li</vendor>
: <description>JNLP Test</description>
: <description kind="short">JNLP Test</description>
: <offline-allowed/>
: </information>
: <resources>
: <j2se version="1.6.0+"/>
: <jar href="Test04.jar"/>
: </resources>
: <application-desc main-class="TestWindowWs"/>
: </jnlp>
继耍笨的问题解决之後,
新的问题产生....
call web service的时候发生以下错误....
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/xml/rpc/Service
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at Test01.TestWindowWs$1.actionPerformed(TestWindowWs.java:58)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.xml.rpc.Service
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 50 more
多到爆炸....不过绝大部分是因为call service 写在按钮的事件里...
所以才这麽多吧?
我想问的是, 直接执行.jar档就不会发生这些错误,
透过java web start去执行就会这样....??
问题在哪里??
请高手指点....谢谢.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.207.232
1F:推 hgs1906:resource 里面要加 <nativelib href="会用到的jar档位置"> 12/20 16:09