0

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 起動時に、アプリケーションは正常に動作します。

4

1 に答える 1

0

後に続く人のために、これは、Webstartを介してMacOSXにJambiをデプロイすることについて私たちが発見した情報です。

qtjambi-macosx-gcc-4.5.2_01が、webstartからのインストール/起動時に見つかりません。このライブラリがパス上にある場合、webstartはそれを見つけて使用することができ、正しく起動します。さらに、設定する必要のあるJNLPプロパティがいくつかあります。

  <resources os="Mac OS X">
    <!-- Currently Unsupported-->
    <property name="com.trolltech.launcher.webstart" value="true" />
    <property name="com.trolltech.verbose-loading" value="true" />
    <j2se version="1.5+" java-vm-args="-d32 -XstartOnFirstThread"/>
    <jar href="/path/to/qtjambi-macosx-gcc-4.5.2_01.jar" />
  </resources>

プロパティcom.trolltech.launcher.webstartは、Webstartを介して開始していることをJambiライブラリに通知し、Webstartが機能するように自身を構成するために必要です。残念ながら、現時点ではmacosxでは壊れています。

4.6へのQTJambiコミュニティポートは上記の問題を解決しますが、新しい問題をもたらします。

http://qt.gitorious.org/qt-jambi/community-port-to-4_6 http://sourceforge.net/apps/trac/qtjambi/ticket/37

このバグについても調査しましたが、機能させるには1行のコードを変更する必要があります。つまり、クラスローダーを変更してwebstart(より安全なクラスローダー)でうまく機能するようにする必要があります。ビルドシステムがかなり遅れていて、適切に調査する時間がないため、私はまだ試みていません。

したがって、MacOSXでWebstartを使用してQTJambiアプリケーションをデプロイする際に問題が発生した場合は、その理由がわかります。誰かが4.6の変更に取り掛かった場合は、ここに投稿してこの情報を更新してください。または、変更することになった場合は、ここにも投稿します。

役立つ参考資料:

http://doc.qt.nokia.com/qtjambi-4.3.5_01/com/trolltech/qt/qtjambi-systemproperties.html

于 2010-09-17T01:23:37.687 に答える