#java #gtk #javac #gnome
#java #gtk #javac #gnome
Вопрос:
При попытке скомпилировать эту небольшую Java-программу для использования класса Notifier из java-gnome (созданного из последней ветки bzr):
import org.gnome.notify;
class Notifier {
public void Main(String[] args) {
Notification n = new Notification("Test notification", "Blah.", "");
n.setTimeout(2000);
n.show();
}
}
Я получаю следующий вывод при компиляции с:
$ javac -cp .:/usr/local/share/java/gtk-4.0.jar Notifier.java
Notifier.java:1: package org.gnome does not exist
import org.gnome.notify;
^
Notifier.java:7: cannot find symbol
symbol : class Notification
location: class Notifier
Notification n = new Notification("Test notification", "Blah.", "");
^
Notifier.java:7: cannot find symbol
symbol : class Notification
location: class Notifier
Notification n = new Notification("Test notification", "Blah.", "");
^
3 errors
/usr/local/share/java/gtk-4.0.jar определенно существует в этом расположении и содержит используемые классы. Что не так? Большое спасибо.
Ответ №1:
Возможно, это просто опечатка в вашем вопросе, но строка импорта должна гласить:
import org.gnome.notify.*;
Обратите внимание на завершающую звездочку.
Кроме того, ваш main
метод должен быть статическим.
Ответ №2:
Даже если вы будете следовать Rich (который абсолютно прав), ваше приложение не будет компилироваться. Вот минималистичный пример:
import org.gnome.gdk.Event;
import org.gnome.gtk.Gtk;
import org.gnome.gtk.Widget;
import org.gnome.gtk.Window;
import org.gnome.notify.Notification;
public class Main {
public static void main(String[] args) {
// gtk init
Gtk.init(args);
// create main window
final Window window = new Window();
// connect delete event to main window
window.connect(new Window.DeleteEvent() {
public boolean onDeleteEvent(Widget source, Event event) {
Gtk.mainQuit();
return false;
}
});
// create notification
Notification notification = new Notification("foo", "bar", "baz", window);
// show widgets
window.show();
notification.show();
// main loop
Gtk.main();
}
}
Строка компилятора:
javac -classpath $CLASSPATH:/usr/local/share/java/gtk-4.0.jar Main.java
Комментарии:
1. Спасибо, ребята. Поскольку моя программа была cli, мне фактически понадобился только Gtk.init (аргументы) и импорт org.gnome.gtk.Gtk, но это полезно знать для надлежащих приложений GTK в будущем.
2. Извините за задержку с моим ответом, кстати.