Java-программа, использующая gnome-java, не будет компилироваться - PullRequest
1 голос
/ 17 мая 2011

При попытке скомпилировать эту небольшую 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 определенно существует в этом месте и содержит используемые классы. Что случилось? Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Возможно, это просто опечатка в вашем вопросе, но строка импорта должна выглядеть так:

import org.gnome.notify.*;

Обратите внимание на конечную звездочку.

Кроме того, ваш main метод должен быть статическим.

3 голосов
/ 18 мая 2011

Даже если вы следуете Ричу (который абсолютно прав), ваше приложение не будет компилироваться. Вот минималистичный пример:

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