Для нашего приложения SWT я хочу предоставить общий пакет загрузки Linux, который может запускаться как на 32-битных, так и на 64-битных виртуальных машинах.В настоящее время мы определяем путь к классам, используя манифест, и запускаем приложение, используя java -jar main.jar
.Путь к классу манифеста содержит несколько swt * .jars, и выбирается первый соответствующий (без проблем, потому что в настоящее время для каждой платформы распространяется только один).
Просто поставляем обе библиотеки SWT, swt-linux-32.jar
и swt-linux-64.jar
выглядит не очень многообещающе, потому что тогда либо пользователю придется вручную удалить неправильный файл, либо сценарию придется динамически (страшно!) настроить весь путь к классу приложения.
Я думал о предоставлении двухскрипты запуска, один для 32-битных виртуальных машин, а другой для 64-битных виртуальных машин, удаляющий swt.jars из пути к классам манифеста и явно добавляющий правильный к пути к классам, например, java -cp swt-linux-64.jar -jar main.jar
.К сожалению, похоже, что нельзя смешивать явное определение пути к классу (-cp
) с неявным (-jar
).
Еще одним решением может быть явное задание classpathes в сценариях запуска, но это будетусложнить ведение сценариев.
Конечно, у меня была бы альтернатива для динамической загрузки правильного файла swt.jar в приложение, но я бы предпочел не указывать разные имена файлов в коде Java..
Есть ли у кого-нибудь еще лучшее предложение, как мы можем справиться с этим?