Многочисленные исключения во время выполнения в первом приложении QT Jambi? - PullRequest
0 голосов
/ 12 октября 2011

Хмммм ..... это моё первое приложение на QT Jambi и в значительной степени просто попытка вызвать окно.
Это команда терминала, которую я использовал:

java -XstartOnFirstThread -cp qtjambi-4.6.3.jar: qtjambi-примеры-4.6.3.jar: qtjambi-MacOSX-GCC-4.6.3.jar :. GUI

И, кстати, я использую Mac OS X Lion 64-bit на MacBook.
Вот результат вышеупомянутой команды:

Исключение в потоке "main" java.lang.ExceptionInInitializerError at com.trolltech.qt.gui.QApplication. (QApplication.java:12) в GUI.main (GUI.java:9) Вызывается: java.lang.RuntimeException: Загрузка библиотека потерпела неудачу, прогресс на данный момент: Распаковка .jar файла: 'qtjambi-macosx-gcc-4.6.3.jar' Проверка архива 'Qtjambi-MacOSX-НКУ-4.6.3.jar' - ключ кеша = 'gcc-20100817-1815' - добавление libQtCore.4.dylib на карту библиотеки - library: name = 'lib / libQtCore.4.dylib', - добавление libQtGui.4.dylib на карту библиотеки - библиотека: name = 'lib / libQtGui.4.dylib', - добавление libQtXml.4.dylib на карту библиотеки - library: name = 'lib / libQtXml.4.dylib', - добавление libQtSql.4.dylib на библиотечную карту - library: name = 'lib / libQtSql.4.dylib', - добавление libQtSvg.4.dylib на карту библиотеки - библиотека: name = 'lib / libQtSvg.4.dylib', - добавление libQtHelp.4.dylib на библиотечную карту - библиотека: name = 'lib / libQtHelp.4.dylib', - добавление libQtScript.4.dylib на библиотечную карту - library: name = 'lib / libQtScript.4.dylib', - добавление libQtScriptTools.4.dylib на карту библиотеки - library: name = 'lib / libQtScriptTools.4.dylib', - добавление libQtMultimedia.4.dylib на карту библиотеки - library: name = 'lib / libQtMultimedia.4.dylib', - добавление libQtNetwork.4.dylib на карту библиотеки - library: name = 'lib / libQtNetwork.4.dylib', - добавить 'libQtOpenGL.4.dylib' на карту библиотеки - библиотека: name = 'lib / libQtOpenGL.4.dylib', - добавление libQtWebKit.4.dylib на карту библиотеки - библиотека: name = 'lib / libQtWebKit.4.dylib', - добавление libQtXmlPatterns.4.dylib на карту библиотеки - library: name = 'lib / libQtXmlPatterns.4.dylib', - добавление libphonon.4.dylib на библиотечную карту - library: name = 'lib / libphonon.4.dylib', - добавление libQtDBus.4.dylib на карту библиотеки - библиотека: name = 'lib / libQtDBus.4.dylib', - библиотека: name = 'plugins / phonon_backend / libphonon_qt7.dylib', никогда не загружаться - библиотека: name = 'plugins / imageformats / libqjpeg.dylib', никогда не загружать - библиотека: name = 'plugins / imageformats / libqgif.dylib', никогда не загружать - библиотека: name = 'plugins / imageformats / libqmng.dylib', никогда не загружать - библиотека: name = 'plugins / imageformats / libqtiff.dylib', никогда не загружать - библиотека: name = 'plugins / imageformats / libqsvg.dylib', никогда не загружать - библиотека: name = 'plugins / iconengines / libqsvgicon.dylib', никогда не загружаться - библиотека: name = 'plugins / codecs / libqcncodecs.dylib', никогда не загружать - библиотека: name = 'plugins / codecs / libqjpcodecs.dylib', никогда не загружать - библиотека: name = 'plugins / codecs / libqkrcodecs.dylib', никогда не загружать - библиотека: name = 'plugins / codecs / libqtwcodecs.dylib', никогда не загружать - library: name = 'plugins / available / libqtaccessiblewidgets.dylib', никогда не загружаться - библиотека: name = 'plugins / sqldrivers / libqsqlite.dylib', никогда не загружаться - добавление libqtjambi.jnilib на библиотечную карту - библиотека: name = 'lib / libqtjambi.jnilib', - добавление libcom_trolltech_qt_core.jnilib на карту библиотеки - библиотека: имя = 'lib / libcom_trolltech_qt_core.jnilib', - добавление libcom_trolltech_qt_gui.jnilib на карту библиотеки - библиотека: имя = 'lib / libcom_trolltech_qt_gui.jnilib',

  • добавление libcom_trolltech_qt_xml.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_xml.jnilib',
  • добавление libcom_trolltech_qt_sql.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_sql.jnilib',
  • добавление libcom_trolltech_qt_svg.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_svg.jnilib',
  • добавление libcom_trolltech_qt_help.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_help.jnilib',
  • добавление libcom_trolltech_qt_script.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_script.jnilib',
  • добавление libcom_trolltech_qt_scripttools.jnilib на библиотечную карту
  • library: name = 'lib / libcom_trolltech_qt_scripttools.jnilib',
  • добавление libcom_trolltech_qt_multimedia.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_multimedia.jnilib',
  • добавление libcom_trolltech_qt_network.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_network.jnilib',
  • добавление libcom_trolltech_qt_opengl.jnilib 'на карту библиотеки
  • библиотека: имя = 'lib / libcom_trolltech_qt_opengl.jnilib',
  • добавление libcom_trolltech_qt_phonon.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_phonon.jnilib',
  • добавление libcom_trolltech_qt_webkit.jnilib на библиотечную карту
  • библиотека: имя = 'lib / libcom_trolltech_qt_webkit.jnilib',
  • добавление libcom_trolltech_qt_xmlpatterns.jnilib 'на карту библиотеки
  • библиотека: имя = 'lib / libcom_trolltech_qt_xmlpatterns.jnilib',
  • добавление 'classes.nib' к карте библиотеки
  • library: name = 'lib / Resources / qt_menu.nib / classes.nib',
  • добавление файла info.nib к карте библиотеки
  • library: name = 'lib / Resources / qt_menu.nib / info.nib',
  • добавление 'keyedobjects.nib' к карте библиотеки
  • library: name = 'lib / Resources / qt_menu.nib / keyedobjects.nib',
  • путь к плагину = 'плагины'
  • используя каталог кэша: '/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815'
  • каталог кэша существует Загружаемая библиотека: 'libQtCore.4.dylib' ...
  • с использованием спецификации развертывания
  • ки! Загрузка библиотеки: 'libqtjambi.jnilib' ...
  • с использованием спецификации развертывания
  • ки! Загрузка библиотеки: 'libQtCore.4.dylib' ...
  • уже загружено, пропуск ... Загрузка библиотеки: 'libcom_trolltech_qt_core.jnilib' ...
  • с использованием спецификации развертывания
  • ки! Загрузка библиотеки: 'libQtGui.4.dylib' ...
  • с использованием спецификации развертывания

    в 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:145) в com.trolltech.qt.Utilities.loadQtLibrary (Utilities.java:141) в com.trolltech.qt.gui.QtJambi_LibraryInitializer. (QtJambi_LibraryInitializer.java:7) ... еще 2 причины: 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 Ссылка на: /private/var/folders/4p/s98fh7114t5g3y05fh59ctpm0000gn/T/QtJambi_b-dahse_x86_64_4.6.3_gcc-20100817-1815/lib/libQtGui.4.dylib Причина: изображение не найдено

    at java.lang.ClassLoader $ NativeLibrary.load (собственный метод) в java.lang.ClassLoader.loadLibrary0 (ClassLoader.java:1827) в java.lang.ClassLoader.loadLibrary (ClassLoader.java:1703) в java.lang.Runtime.load0 (Runtime.java:770) в java.lang.Runtime.load (Runtime.java:758) в com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper (NativeLibraryManager.java:458) в com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary (NativeLibraryManager.java:426) ... еще 6

Вот исходный код 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 ]

2 голосов
/ 13 октября 2011

Вам необходимо /opt/local/lib/libpng12.0.dylib

Часть сообщения об ошибке, указывающая на это, указана ниже:

Вызывается: /local/lib/libpng12.0.dylib

.

Похоже, что тот, кто собирал и упаковывал эту версию QtJambi, использовал стороннюю библиотеку libpng. К сожалению, я не могу сказать вам, откуда это взять (и, если честно, то, что он находится в / opt / local, означает, что он, вероятно, самодельный).

Как насчет того, чтобы попробовать с http://sourceforge.net/projects/qtjambi/files/4.7.0-beta1/, пожалуйста, прокомментируйте здесь, если это поможет или помешает вашему прогрессу.

Существуют (к сожалению) известные несоответствия с различными сборками QtJambi, но я надеюсь, что эти вещи будут устранены в будущем, когда я наконец смогу опубликовать некоторые выпуски самостоятельно.

0 голосов
/ 14 октября 2011

РЕДАКТИРОВАТЬ: я исправил это, изменив скрипт оболочки следующим образом:

#!/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

Я скачал 32-битную версию Qt Jambi 4.7.0-beta1 для Mac OS X,и когда я запускаю сценарий оболочки qtjambi.sh, выводится следующее: НЕ ДОЛЖЕН ДОЛЖЕН !!

...