Re: [問題] Java Web Start 執行 Java 視窗程式的問題

看板java作者 (天使不見了)時間15年前 (2010/12/20 13:21), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

12/20 16:09, , 1F
resource 裡面要加 <nativelib href="會用到的jar檔位置">
12/20 16:09, 1F
文章代碼(AID): #1D3kVoBg (java)
文章代碼(AID): #1D3kVoBg (java)