SWT баночка для другой платформы

Я использую JWebBrowser в приложении Swing. Этот класс принадлежит Проекту DJ. Это нужно SWT JAR для выполнения. Теперь я включил SWT JAR для окон в мою упаковку JAR приложения. Я хочу знать, как я могу включить SWT JAR для Linux/ Mac в той же упаковке? Я использую муравей для создания jar приложения. Должен ли я построить банку с разными банками для разных платформ?

3 ответа

Решение

Если вы хотите иметь одну сборку, которая работает на разных платформах (Win/Mac/Linux/*nix) или архитектурах (32/64 бит), тогда вы можете связать SWT-jar для каждой целевой платформы с вашим установщиком и затем загрузить правильную один динамически во время выполнения (или попросите вашего установщика скопировать правильный файл SWT во время установки).

Например, если вы хотите поддерживать 32- и 64-битные Windows и Linux, у вас должны быть файлы SWT:

lib/swt_win_32.jar
lib/swt_win_64.jar
lib/swt_linux_32.jar
lib/swt_linux_32.jar

Сделайте так, чтобы ваш скрипт / установщик ant включал в себя все это (они составляют около 1,6 МБ каждый), а затем во время выполнения в вашем коде вы можете определять ОС и архитектуру, используя системные свойства Java.

System.getProperty("os.name");
System.getProperty("os.arch");

построить имя правильного файла JAR.

Загрузка JAR во время выполнения может быть выполнена с помощью пользовательского загрузчика классов или путем вызова защищенного метода URLClassloader.addURL(URL url) используя отражение.

Я поместил рабочий код для выполнения этой точной задачи на моем сайте: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191

Если вы можете выдержать запах кода, то это быстрое решение очень распространенной проблемы SWT.

В Mac OS +X вы можете включить необходимые библиотеки JAR и JNI в комплект приложений, как показано в этом проекте. См. Также " Развертывание приложений SWT в Mac OS X".

В Linux большинство платформ делают swt-gtk пакет доступен. В качестве конкретного примера, вот скрипт запуска для AppleCommander:

java -Djava.library.path=/usr/lib/jni \
    -cp /usr/lib/java/swt-gtk-3.5.1.jar:AppleCommander-1.3.5.8.jar \
    com.webcodepro.applecommander.ui.AppleCommander -swt

Этот ответ содержит код для выбора правильного SWT-файла JAR при запуске приложения. Создание кроссплатформенного приложения Java SWT

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

Другие вопросы по тегам