2011-10-12 14 views
0

嗯......這是我的第一個QT Jambi應用程序,幾乎只是一個嘗試打開窗口。
這是我用過的終端命令:第一個QT Jambi應用程序中有多個運行時異常?

java -XstartOnFirstThread -cp qtjambi-4.6.3.jar:qtjambi-examples-4.6.3.jar:qtjambi-macosx-gcc-4.6.3.jar:. GUI

順便說一下,我在MacBook上運行Mac OS X Lion的64位。
這裏是上面的命令的結果:

Exception in thread "main" java.lang.ExceptionInInitializerError at com.trolltech.qt.gui.QApplication.(QApplication.java:12) at GUI.main(GUI.java:9) Caused by: java.lang.RuntimeException: Loading library failed, progress so far: Unpacking .jar file: 'qtjambi-macosx-gcc-4.6.3.jar' Checking Archive 'qtjambi-macosx-gcc-4.6.3.jar' - cache key='gcc-20100817-1815' - adding 'libQtCore.4.dylib' to library map - library: name='lib/libQtCore.4.dylib', - adding 'libQtGui.4.dylib' to library map - library: name='lib/libQtGui.4.dylib', - adding 'libQtXml.4.dylib' to library map - library: name='lib/libQtXml.4.dylib', - adding 'libQtSql.4.dylib' to library map - library: name='lib/libQtSql.4.dylib', - adding 'libQtSvg.4.dylib' to library map - library: name='lib/libQtSvg.4.dylib', - adding 'libQtHelp.4.dylib' to library map - library: name='lib/libQtHelp.4.dylib', - adding 'libQtScript.4.dylib' to library map - library: name='lib/libQtScript.4.dylib', - adding 'libQtScriptTools.4.dylib' to library map - library: name='lib/libQtScriptTools.4.dylib', - adding 'libQtMultimedia.4.dylib' to library map - library: name='lib/libQtMultimedia.4.dylib', - adding 'libQtNetwork.4.dylib' to library map - library: name='lib/libQtNetwork.4.dylib', - adding 'libQtOpenGL.4.dylib' to library map - library: name='lib/libQtOpenGL.4.dylib', - adding 'libQtWebKit.4.dylib' to library map - library: name='lib/libQtWebKit.4.dylib', - adding 'libQtXmlPatterns.4.dylib' to library map - library: name='lib/libQtXmlPatterns.4.dylib', - adding 'libphonon.4.dylib' to library map - library: name='lib/libphonon.4.dylib', - adding 'libQtDBus.4.dylib' to library map - library: name='lib/libQtDBus.4.dylib', - library: name='plugins/phonon_backend/libphonon_qt7.dylib', never load - library: name='plugins/imageformats/libqjpeg.dylib', never load - library: name='plugins/imageformats/libqgif.dylib', never load - library: name='plugins/imageformats/libqmng.dylib', never load - library: name='plugins/imageformats/libqtiff.dylib', never load - library: name='plugins/imageformats/libqsvg.dylib', never load - library: name='plugins/iconengines/libqsvgicon.dylib', never load - library: name='plugins/codecs/libqcncodecs.dylib', never load - library: name='plugins/codecs/libqjpcodecs.dylib', never load - library: name='plugins/codecs/libqkrcodecs.dylib', never load - library: name='plugins/codecs/libqtwcodecs.dylib', never load - library: name='plugins/accessible/libqtaccessiblewidgets.dylib', never load - library: name='plugins/sqldrivers/libqsqlite.dylib', never load - adding 'libqtjambi.jnilib' to library map - library: name='lib/libqtjambi.jnilib', - adding 'libcom_trolltech_qt_core.jnilib' to library map - library: name='lib/libcom_trolltech_qt_core.jnilib', - adding 'libcom_trolltech_qt_gui.jnilib' to library map - library: name='lib/libcom_trolltech_qt_gui.jnilib',

  • adding 'libcom_trolltech_qt_xml.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_xml.jnilib',
  • adding 'libcom_trolltech_qt_sql.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_sql.jnilib',
  • adding 'libcom_trolltech_qt_svg.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_svg.jnilib',
  • adding 'libcom_trolltech_qt_help.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_help.jnilib',
  • adding 'libcom_trolltech_qt_script.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_script.jnilib',
  • adding 'libcom_trolltech_qt_scripttools.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_scripttools.jnilib',
  • adding 'libcom_trolltech_qt_multimedia.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_multimedia.jnilib',
  • adding 'libcom_trolltech_qt_network.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_network.jnilib',
  • adding 'libcom_trolltech_qt_opengl.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_opengl.jnilib',
  • adding 'libcom_trolltech_qt_phonon.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_phonon.jnilib',
  • adding 'libcom_trolltech_qt_webkit.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_webkit.jnilib',
  • adding 'libcom_trolltech_qt_xmlpatterns.jnilib' to library map
  • library: name='lib/libcom_trolltech_qt_xmlpatterns.jnilib',
  • adding 'classes.nib' to library map
  • library: name='lib/Resources/qt_menu.nib/classes.nib',
  • adding 'info.nib' to library map
  • library: name='lib/Resources/qt_menu.nib/info.nib',
  • adding 'keyedobjects.nib' to library map
  • library: name='lib/Resources/qt_menu.nib/keyedobjects.nib',
  • plugin path='plugins'
  • using cache directory: '/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815'
  • cache directory exists Loading library: 'libQtCore.4.dylib'...
  • using deployment spec
  • ok! Loading library: 'libqtjambi.jnilib'...
  • using deployment spec
  • ok! Loading library: 'libQtCore.4.dylib'...
  • already loaded, skipping... Loading library: 'libcom_trolltech_qt_core.jnilib'...
  • using deployment spec
  • ok! Loading library: 'libQtGui.4.dylib'...
  • using deployment spec

    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:145) at com.trolltech.qt.Utilities.loadQtLibrary(Utilities.java:141) at com.trolltech.qt.gui.QtJambi_LibraryInitializer.(QtJambi_LibraryInitializer.java:7) ... 2 more Caused by: java.lang.UnsatisfiedLinkError: /private/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815/lib/libQtGui.4.dylib: Library not loaded: /opt/local/lib/libpng12.0.dylib Referenced from: /private/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815/lib/libQtGui.4.dylib Reason: image not found

    at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703) at java.lang.Runtime.load0(Runtime.java:770) at java.lang.Runtime.load(Runtime.java:758) at com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(NativeLibraryManager.java:458) at com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(NativeLibraryManager.java:426) ... 6 more

這裏的GUI.java的源代碼:

import gui.ViewWindow; 
import com.trolltech.qt.gui.QApplication; 

public class GUI { 

    public static ViewWindow viewWindow; 

    public static void main(String[] args) { 
     QApplication.initialize(args); 
     viewWindow = new ViewWindow(); 
     QApplication.exec(); 
    } 
} 

而這裏的ViewWindow.java:

package gui; 

import com.trolltech.qt.gui.QWidget; 

public class ViewWindow extends QWidget { 

    public ViewWindow() { 
     setWindowTitle("Level editor for Ben's Great Escape"); 

     resize(1000, 600); 
     move(0, 0); 
     show(); 
    } 
} 

我現在非常困惑和不知所措,所以任何以前見過這個的人,請看看併發布你可能有的任何輸入。

回答

2

你需要/opt/local/lib/libpng12.0.dylib

指示該錯誤消息的一部分引述如下:java.lang.UnsatisfiedLinkError中:

所致/ private/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815/lib/libQtGui.4.dylib:庫未加載:/opt/local/lib/libpng12.0.dylib

看起來像是誰構建並打包了QtJambi版本使用的是第三方libpng庫。不幸的是,我不能告訴你從哪裏得到(而且說實話,它在/ opt/local意味着它可能是自制的)。

如果您嘗試使用http://sourceforge.net/projects/qtjambi/files/4.7.0-beta1/,請回復此處,如果這有幫助或妨礙您的進度。

(不幸的是)與QtJambi的各種版本存在已知的不一致性,但我希望這些東西在將來我自己發佈某些版本時被解決。

0

編輯:我通過改變shell腳本這個固定:

#!/bin/sh 

me=$(dirname $0) 

if [ -e binpatch ]; 
then 
    ./binpatch 
    export DYLD_LIBRARY_PATH=$me/lib 
    export QT_PLUGIN_PATH=$me/plugins 
fi 

if ! java -version 2>&1 | grep -q "1\.[5-9]" 
then 
    echo "Qt Jambi requires Java version 1.5.0 or higher to be preinstalled" 
    echo "to work. If Java is installed then make sure that the 'java' executable" 
    echo "is available in the PATH environment." 
else 
    for lib in $(ls qtjambi*.jar); do 
    CP=$lib:$CP 
    done 
    java -d32 -XstartOnFirstThread -cp $CP com.trolltech.launcher.Launcher 
fi 

我已經下載的Qt Jambi的4.7.0-β132位的Mac OS X,當我運行qtjambi.sh shell腳本,這是輸出的內容: 不再需要!

+0

啊..所以MacOSX版本使用./binpatch?這是一個修改* .dylib中絕對路徑的工具,我不知道這個工具正在被使用 - 不再需要/仍然需要。 binpatch可能會修復分發以查找libpng。 –

相關問題