【问题标题】:Problem Deploying QT Jambi with web start on Mac OS X在 Mac OS X 上使用 Web 启动部署 QT Jambi 时出现问题
【发布时间】:2011-04-01 12:00:58
【问题描述】:

我有一个用 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。有谁知道到底是什么导致了这个错误?

编辑:

Web 启动到 Windows 时应用程序运行良好。

【问题讨论】:

    标签: java macos qt java-web-start qt-jambi


    【解决方案1】:

    对于后面的人,这是我们发现的有关通过 webstart 将 Jambi 部署到 Mac OS X 的信息。

    从 webstart 安装/启动时找不到 qtjambi-macosx-gcc-4.5.2_01。如果此库在您的路径上,则 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 来通知 Jambi 库我们正在通过 webstart 启动,并以允许 webstart 工作的方式配置自身。不幸的是,此时它在 mac os x 上已损坏。

    QTJambi Community Port to 4.6 解决了上述问题,但引入了一个新问题。

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

    我也调查了这个错误,它需要更改一行代码才能正常工作,即更改类加载器以与 webstart 配合使用(更安全的类加载器)。我还没有尝试过,因为构建系统非常落后并且没有时间进行适当的调查。

    所以,如果您在 Mac OSX 上使用 webstart 部署 QT Jambi 应用程序时遇到问题,您现在知道原因了。如果有人想更改 4.6,请在此处发布并更新此信息。或者,如果我有时间改变它,我也会在这里发布。

    有用的参考资料:

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

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多