Пример QtJambi не выполняется

Я пытаюсь скомпилировать и запустить код всплывающей подсказки из этого руководства. Я получил QtJambi от своего менеджера пакетов (пакет qtjambi-beta из AUR), который установил его в каталог /opt/qtjambi-beta/. В частности, файл qtjambi-4.7.0.jar расположен по адресу /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar.

Теперь я создал папку с именем qtpractice и поместил туда пример под именем JambiApp.java. Код, который я вставил в него, был точно следующим (следуя приведенному мной примеру):

package qtpractice;

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

public class JambiApp extends QWidget {

     public JambiApp() {
        setWindowTitle("Tooltip");
        setToolTip("This is QWidget");
        resize(250, 150);
        move(300, 300);
        show();
    }


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

Я скомпилировал его с помощью javac qtpractice/*.java -cp /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar, который работал нормально. Затем я попытался выполнить его с помощью java qtpractice.JambiApp и получил следующую ошибку:

Error: Could not find or load main class qtpractice.JambiApp

РЕДАКТИРОВАТЬ: Основываясь на некоторых советах из комментариев, я попробовал эту команду вместо этого: java -cp /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar qtpractice.JambiApp . Когда я сделал это, я снова получил следующую ошибку:

Error: Could not find or load main class qtpractice.JambiApp

Что я пропустил? Насколько я могу судить, я сделал все необходимое для его выполнения.


person Koz Ross    schedule 30.09.2014    source источник
comment
Вы также должны указать те же аргументы -cp для команды java. Это обычная практика Java.   -  person Smar    schedule 30.09.2014
comment
@Smar: Пробовал - точно такая же ошибка.   -  person Koz Ross    schedule 30.09.2014
comment
Пожалуйста, добавьте всю командную строку и ошибку к вашему вопросу.   -  person Smar    schedule 30.09.2014
comment
Вам также нужно добавить собственный jar-файл в команду выполнения (это не требуется для компиляции).   -  person Smar    schedule 30.09.2014
comment
@Smar: Что вы подразумеваете под «родной банкой»?   -  person Koz Ross    schedule 30.09.2014
comment
Должна быть банка с именем qtjambi-native-linux64-gcc-4.8.6.jar или похожим, или что-то с linux32 linux64, в зависимости от того, сколько лет этой версии. Не могли бы вы назвать эту банку, чтобы я мог правильно ответить? :)   -  person Smar    schedule 30.09.2014
comment
@Smar Это qtjambi-linux64-gcc-4.7.0.jar.   -  person Koz Ross    schedule 30.09.2014
comment
Хорошо, ответил. Извините за поздний ответ, я был на работе и забыл о вопросе :) Надеюсь, что это сработало для вас.   -  person Smar    schedule 30.09.2014


Ответы (1)


Вам нужно включить все jar-файлы, которые нужны Qt Jambi, в путь к классам.

Это можно сделать в CLI с помощью команды, аналогичной

java -cp /opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-4.7.0.jar:/opt/qtjambi-beta/qtjambi-linux64-community-4.7.0/qtjambi-linux64-gcc-4.7.0.jar:. qtpractice.JambiApp

При компиляции собственный jar-файл не обязательно должен присутствовать, так как собственные библиотеки предназначены только для того, чтобы классы Jambi могли использовать Qt.

person Smar    schedule 30.09.2014
comment
Также еще одно замечание - я пытался сделать это в Eclipse, и это сработало нормально. Тем не менее, я действительно не хочу использовать IDE (и я все равно не понимаю, как она делает все это), и это меня очень озадачивает, поэтому я хотел бы выяснить, что, черт возьми, происходит. - person Koz Ross; 01.10.2014
comment
Ну тогда дайте полную ошибку (что вернула команда при ее запуске) - person Smar; 01.10.2014
comment
это все, что он вернул? - person Smar; 01.10.2014
comment
Я так же озадачен, как и ты. - person Koz Ross; 01.10.2014
comment
Ох... Кажется, я понял. Когда вы работаете с classpath, текущий каталог по умолчанию не находится в classpath. Поэтому, если в классе вы запускаете файл из текущего каталога, вам нужно добавить :. до конца пути к классам. Я обновлю ответ. - person Smar; 01.10.2014
comment
Ура! Спасибо большое. - person Koz Ross; 01.10.2014