我有一个使用 Eclipse 构建的 Java 应用程序,它使用 QTJambi。从命令行运行应用程序可以完美运行。
java -d32 -XstartOnFirstThread -jar MyApplication.jar someArg
但是,尝试使用 WebStart 部署应用程序被证明是困难的。我已经阅读了很多资料,似乎很多人在使其在 Mac OS X 上运行时遇到问题。问题似乎是本机库没有正确加载。下面提供了堆栈跟踪。
CWindow 的 _nativeHide 遇到错误:java.lang.reflect.InvocationTargetException
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在 java.lang.reflect.Method.invoke(Method.java:597)
在 com.sun.javaws.Launcher.invokeMainMethod(Launcher.java:1819)
引起:java.lang.ExceptionInInitializerError
在 com.trolltech.qt.QtJambiObject.(QtJambiObject.java:60)
在 com.engage.agentdesktop.Application.main(Application.java:25)
... 5 更多
原因:java.lang.RuntimeException:加载库失败,目前进展:
在类路径中找不到“qtjambi-deployment.xml”,通过“java.library.path”加载库
加载库:'libQtCore.4.dylib'...
- 使用'java.library.path'
在 com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(NativeLibraryManager.java:431)
在 com.trolltech.qt.internal.NativeLibraryManager.loadQtLibrary(NativeLibraryManager.java:355)
在 com.trolltech.qt.Utilities.loadQtLibrary(Utilities.java:140)
在 com.trolltech.qt.Utilities.loadQtLibrary(Utilities.java:136)
在 com.trolltech.qt.QtJambi_LibraryInitializer.(QtJambi_LibraryInitializer.java:56)
... 7 更多
引起:java.lang.RuntimeException:在“java.library.path”=/Users/smeatonj/Desktop/Engage Agent Desktop.app/Contents/Resources/Java:/System 中找不到库“libQtCore.4.dylib” /Library/PrivateFrameworks/JavaApplicationLauncher.framework/Resources:.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
在 com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(NativeLibraryManager.java:486)
在 com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(NativeLibraryManager.java:426)
... 11 更多
这是 webstart.jnlp 文件的摘录:
`[资源`]
`[j2se 版本="1.5+"/`]
`[jar href="${MEDIA_URL}application/webstart/MyApplication.jar" /`]
……
`[jar href="${MEDIA_URL}application/webstart/MyApplication_lib/qtjambi-4.5.2_01.jar" /`]
`[资源 os="Mac OS X"`]
`[j2se 版本="1.5+" java-vm-args="-d32 -XstartOnFirstThread"/`]
`[jar href="${MEDIA_URL}application/webstart/MyApplication_lib/qtjambi-macosx-gcc-4.5.2_01.jar" /`]
`[/资源`]
该错误告诉我在类路径中找不到 qtjambi-deployment.xml。我已经打开了 qtjambi-macosx-gcc-4.5.2_01.jar,那里肯定有 qtjambi-deployment.xml 文件。
资源 os="Max OS X" 节点肯定是由 JNLP 加载的,因为在此之前我收到了不同的错误,需要我将 -d32 放入 vm args。有谁知道到底是什么导致了这个错误?
编辑:
当网络启动到 Windows 时,应用程序运行良好。