2010-08-20 4 views
0

J'ai une application Java, construite avec eclipse, qui utilise QTJambi. L'exécution de l'application à partir de la ligne de commande fonctionne parfaitement. Cependant, essayer de déployer l'application avec WebStart s'avère difficile. J'ai fait beaucoup de lecture et il semble que beaucoup de gens ont des problèmes à faire fonctionner Mac OS X. Le problème semble être que les bibliothèques natives ne sont pas correctement chargées. La trace de pile est fournie ci-dessous.Problème Déploiement de QT Jambi avec démarrage Web sous Mac OS X

 

CWindow's _nativeHide encountered error: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.javaws.Launcher.invokeMainMethod(Launcher.java:1819) 
Caused by: java.lang.ExceptionInInitializerError 
    at com.trolltech.qt.QtJambiObject.(QtJambiObject.java:60) 
    at com.engage.agentdesktop.Application.main(Application.java:25) 
    ... 5 more 
Caused by: java.lang.RuntimeException: Loading library failed, progress so far: 
No 'qtjambi-deployment.xml' found in classpath, loading libraries via 'java.library.path' 
Loading library: 'libQtCore.4.dylib'... 
- using 'java.library.path' 

    at com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(NativeLibraryManager.java:431) 
    at com.trolltech.qt.internal.NativeLibraryManager.loadQtLibrary(NativeLibraryManager.java:355) 
    at com.trolltech.qt.Utilities.loadQtLibrary(Utilities.java:140) 
    at com.trolltech.qt.Utilities.loadQtLibrary(Utilities.java:136) 
    at com.trolltech.qt.QtJambi_LibraryInitializer.(QtJambi_LibraryInitializer.java:56) 
    ... 7 more 
Caused by: java.lang.RuntimeException: Library 'libQtCore.4.dylib' was not found in '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 
    at com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(NativeLibraryManager.java:486) 
    at com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(NativeLibraryManager.java:426) 
    ... 11 more 

Ceci est un extrait du fichier webstart.jnlp:

 
    `[resources`] 
     `[j2se version="1.5+"/`] 
    `[jar href="${MEDIA_URL}application/webstart/MyApplication.jar" /`] 
     .... 
     `[jar href="${MEDIA_URL}application/webstart/MyApplication_lib/qtjambi-4.5.2_01.jar" /`] 

    `[resources 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" /`] 
    `[/resources`] 

L'erreur me dit que qtjambi-deployment.xml ne se trouve pas dans le chemin de classe. J'ai ouvert qtjambi-macosx-gcc-4.5.2_01.jar et il y a certainement le fichier qtjambi-deployment.xml ici. Le nœud resources = "Max OS X" est définitivement chargé par le JNLP, car je recevais différentes erreurs avant que cela ne m'oblige à mettre -d32 dans les arguments vm. Est-ce que quelqu'un sait ce que l'enfer pourrait causer cette erreur?

Edit:

L'application fonctionne très bien quand webstarting à Windows.

Répondre

0

Pour ceux qui viennent après, ce sont les informations que nous avons découvert sur le déploiement Jambi via webstart à Mac OS X.

qtjambi-macosx-gcc-4.5.2_01 ne peut pas être trouvé lors de l'installation/lancement de webstart . Si cette bibliothèque est sur votre chemin, webstart est capable de la trouver et de l'utiliser, et se lancera correctement. En outre, certaines propriétés JNLP doivent être définies.

<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> 

Le com.trolltech.launcher.webstart de propriété est tenu d'informer les bibliothèques Jambi que nous commençons par webstart et de se configurer de telle manière à permettre webstart de travailler. Malheureusement, il est cassé pour mac os x en ce moment.

Le port de communauté QTJambi à 4.6 résout le problème ci-dessus, mais introduit un nouveau problème.

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

J'ai étudié ce bug ainsi, et il faut changer une ligne de code pour faire fonctionner, à savoir changer le chargeur de classe pour jouer agréable avec webstart (plus sûr chargeur de classe). Je n'ai pas encore essayé, en raison du système de construction étant tout à fait rebutant et n'ayant pas le temps d'enquêter correctement. Donc, si vous rencontrez des problèmes pour déployer des applications QT Jambi avec webstart sous Mac OSX, vous savez maintenant pourquoi. Si quelqu'un change la version 4.6, veuillez poster ici et mettre à jour cette information. Sinon, si je me déplace pour le changer, je posterai ici aussi.

références utiles:

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