2008-11-04 9 views
4

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

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

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

 
java -jar myjar.jar 

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

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

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

ответ

0

Java загружает баночки в своем пути к классам, то есть jar1: jar2: jar3 ... Большинство приложений Java поставляются с каким-то скриптом, который устанавливает все это, указав путь к классам и список баннеров, которые приложение будет необходимость.

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

На самом деле это не проблема, самым простым решением, вероятно, является слияние маленького запуска сценария оболочки.

2

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

+0

они разделены пробелами. – dhiller 2008-11-05 07:30:05

0

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

http://java.sys-con.com/node/37130

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

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

Удачи!

0

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

1

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