QTJambi を使用する Eclipse で構築された Java アプリケーションがあります。コマンドラインからアプリケーションを実行すると、完全に機能します。
java -d32 -XstartOnFirstThread -jar MyApplication.jar someArg
ただし、WebStart を使用してアプリケーションをデプロイしようとするのは難しいことがわかっています。私はたくさんの読書をしましたが、多くの人がこれを Mac OS X で動作させるのに問題を抱えているようです。問題は、ネイティブ ライブラリが正しく読み込まれていないことのようです。スタック トレースを以下に示します。
CWindow の _nativeHide でエラーが発生しました: java.lang.reflect.InvocationTargetException sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) 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: ライブラリ 'libQtCore.4.dylib' が 'java.library.path'=/Users/smeatonj/Desktop/Engage Agent Desktop.app/Contents/Resources/Java:/System に見つかりませんでした/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 version="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 によって確実にロードされています。これは、VM 引数に -d32 を入れる必要がある前にさまざまなエラーを受け取っていたためです。一体何がこのエラーを引き起こしているのか知っている人はいますか?
編集:
Windows への Web 起動時に、アプリケーションは正常に動作します。