Подтвердить что ты не робот

Как найти библиотеки, которые требуется Java Desktop API для Linux?

Я пытаюсь найти способ определения того, какие библиотеки требуется Java для Desktop API, в частности функция BROWSE. Я прочитал несколько руководств, отчеты об ошибках и обходные пути, но никто из них не работает.

Я смог заставить его работать с Debian, установив пакеты libgnome2-0 и gvfs-backends. Первый, как правило, рекомендуется (людьми, которые решают одну и ту же проблему), второй - удачное предположение, потому что кажется, что API-интерфейс Desktop необходим для vfs. Однако я не могу выполнить эту работу на Ubuntu 14.04 даже при установке этих двух пакетов.

Итак, мой вопрос: как я могу найти, какие библиотеки требует Java Desktop API для Linux? В частности, Oracle JDK 8 на Ubuntu 14.04. Можно ли каким-то образом захватить библиотеки, которые используют API-интерфейс для рабочего стола, или получить некоторые ошибки из собственного кода?

EDIT: я создал один код строки, который пытается использовать просмотр:

public class Main {
    public static void main(String[] args) throws URISyntaxException, IOException {
        Desktop.getDesktop().browse(new URI("http://www.google.com"));
    }
}

Я попытался запустить команду для трассировки всех файлов, которые были запрошены во время выполнения теста:

strace -e open,access -f -o browse java -jar BrowseTester.jar

Я получаю много результатов, указывающих, что и родные библиотеки java native, и linux, которые просматриваются, находятся и доступны, но я не уверен, как обнаружить то, что на самом деле отсутствует.

Пример вывода:

30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = 11

Мне нужно, как определить, какие родные библиотеки необходимы для функциональности просмотра Java Desktop API. Я не могу коснуться кода, вызывающего просмотр.

EDIT2. Я попытался установить новый Ubuntu 14.04 с полной средой Gnome на другой машине, и он работает. Однако я бы очень хотел этого избежать, потому что он добавляет 1,5 ГБ (в основном) неиспользуемых библиотек. Все еще ищете способ найти то, что Java требует точно или, по крайней мере, какой-то выход из того места, где он терпит неудачу.

4b9b3361

Ответ 1

Переход на источник может помочь здесь. Копаясь через Makefile, я нахожу, что они включают в себя:

EXTRA_INCLUDES = `pkg-config --cflags glib-2.0` \
                 `pkg-config --cflags libgnome-2.0` \
                 `pkg-config --cflags gnome-vfs-2.0`\
                 `pkg-config --cflags gnome-vfs-module-2.0` \
                 `pkg-config --cflags bonobo-activation-2.0` \
                 `pkg-config --cflags libbonobo-2.0` \
                 `pkg-config --cflags ORBit-2.0` \
                 `pkg-config --cflags gconf-2.0`

И вот он у вас есть:)

Ответ 2

У меня была другая идея: возможно, вы можете использовать ltrace вместо strace?

ltrace -e open,access -f -o browse java -jar BrowseTester.jar