Как заставить Java выполнять jar из текущего каталога в Gnome? - PullRequest
4 голосов
/ 04 ноября 2008

В Ubuntu Linux с Gnome запуск моего приложения Swing двойным щелчком по файлу jar в файловом браузере Gnomes приводит к ошибкам, поскольку необходимые библиотеки, которые динамически загружаются через платформу Java Plugin Framework (находятся в подкаталогах), не найдены. *

Базовые библиотеки для самой платформы разрешены правильно, как указано в файле манифеста моего исполняемого файла jar. Однако после запуска платформы плагины (даже не те, что указывают мою платформу) не найдены.

Запуск приложения из терминала через

java -jar myjar.jar

работает как шарм, объявление запускает приложение, дважды щелкнув скрипт-оболочку.

Однако я бы хотел избежать окна терминала. (Я работаю в Windows, возможно, это не будет раздражать людей с Linux, как это раздражает тех, кто работает на Windows.)

Проблема воспроизводима в нескольких системах Linux. Что мне нужно сделать, чтобы Java правильно разрешала библиотеки?

Ответы [ 5 ]

2 голосов
/ 04 ноября 2008

Я полагаю, что если вы добавите в jar файл META-INF / MANIFEST.MF, содержащий атрибут «Classpath:», со значением, указывающим относительные пути к нужным банкам (я не уверен, являются ли они пробелами) или через запятую), это может сработать.

1 голос
/ 04 ноября 2008

Возможно, вы захотите проверить: средство запуска общего доступа . Это даст вам простой исполняемый файл, который можно сделать для всех видов подготовки к запуску (включая установку classpath и т. Д.). Скорее всего, это излишне для вашей проблемы, но вы можете попробовать (я бы попробовал в вашем случае только потому, что я ненавижу сценарии).

0 голосов
/ 04 ноября 2008

Как предположил Дэвид, вы можете добавить атрибут манифеста Class-Path в вашу банку для более манифеста банку, Class-Path

0 голосов
/ 04 ноября 2008

Либо вы можете написать сценарий оболочки для запуска, и это то, что вы вызываете, или создать модуль запуска. Вот краткое "учебное пособие" о том, как это сделать для нескольких платформ.

http://java.sys -con.com / узел / 37130

Вот как Eclipse делает это. Вероятно, даст вам несколько идей:

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/launcher.html

Удачи!

0 голосов
/ 04 ноября 2008

Java загружает jar-файлы по порядку в своем classpath, т.е. ,

То, что вы хотите сделать, вероятно, не очень рекомендуется, поскольку это означает глобальное указание коллекции jar-файлов, которые вы хотите загрузить с каждым java-приложением, и вы можете создавать конфликты с любыми библиотеками, поставляемыми с приложением.

Это на самом деле не проблема, возможно, самое простое решение - собрать небольшую панель запуска сценариев оболочки.

...