Как определить, работает программа в JAR или нет? - PullRequest
3 голосов
/ 15 апреля 2011

Как я могу определить, работает программа в JAR или нет?

Я спрашиваю это из-за ресурсов загрузки, таких как изображения, шаблоны и т. Д. Внутри файла JAR все будет иначе.

Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 15 апреля 2011

Изучите getClass().getProtectionDomain().getCodeSource().getLocation(); - это даст вам каталог или банку.

4 голосов
/ 15 апреля 2011

Я спрашиваю, что из-за ресурсов загрузки, таких как изображения, шаблоны и т. Д. Внутри JAR-файла все будет иначе.

Нет, не будет, если выделай это правильно.

Это будет работать одинаково независимо от того, загружен ли класс из каталога, веб-сервера или JAR-файла:

ImageIcon icon = new ImageIcon(getClass().getResource("logo.gif"));

В качестве альтернативы используйте метод getResourceAsStream() для максимальной гибкости.

1 голос
/ 15 апреля 2011

Приложение запускается с помощью метода main в каком-то классе, давайте назовем его com.example.Main.

. Этот код можно использовать для печати URL-адреса файла класса, который использовался для его загрузки:

System.out.println(ClassLoader.getSystemResource("com/example/Main.class"));

Это URL-адрес, который использовался для загрузки основного класса ваших приложений, и, если строка URL-адреса начинается с jar:file:, файл класса был загружен из фляги.

1 голос
/ 15 апреля 2011

Используйте getResourceAsStream , чтобы попытаться получить ресурс.Если вы не работаете в банке или ресурс не может быть найден, метод возвращает ноль.В этом случае вы не работаете в банке и должны использовать FileInputStream или другой метод для извлечения вашего ресурса.

Строго говоря, это извлекает ресурсы, которые находятся на пути к классам, но эффект в значительной степени тот, что выкажется нужным.

0 голосов
/ 15 апреля 2011

Вы можете определить его, проверив системное свойство java.class.path.Это вряд ли хорошая идея, однако.Вместо этого вы должны использовать Class.getResourceAsStream().Затем просто поместите ваши активы в ваш проект в ту же логическую структуру каталогов, что и в jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...