Запускаемый jar-файл без java-задачи Ant - как это возможно?

Я унаследовал код от предыдущего разработчика, который с помощью Ant превращается в исполняемый файл jar, запускаемый двойным щелчком. Приложение запускается, но при некоторых условиях вылетает с ошибкой OutOfMemoryError. Чтобы исследовать это, я хотел бы добавить jvm-аргумент -XX: + HeapDumpOnOutOfMemory в файл сборки Ant, и, насколько я понимаю, элемент <jvmarg value="-XX:+HeapDumpOnOutOfMemory" /> должен входить в задачу <java ...>. Однако ни в этом, ни в каких-либо других файлах сборки Ant в этой базе кода нет <java ...> задачи.

Как это вообще возможно? Как можно выполнить jar-файл без <java ...> задачи?

В первую очередь я прошу выяснить, что на самом деле делает мой файл jar исполняемым, чтобы я мог выяснить, где разместить этот элемент <jvmarg /> для отладки OOME.

Спасибо!


person Y.S.    schedule 22.06.2012    source источник
comment
Пожалуйста, опубликуйте содержимое build.xml. Вы получите быстрые ответы ..   -  person Jayan    schedule 23.06.2012
comment
Ответ Дж. Б. Низета говорит правду. Кроме того, вы можете написать стартовый скрипт для запуска вашего приложения. Сценарий запуска обычно представляет собой файл .bat, .cmd (Windows) или .sh (* nix), в котором вы можете выполнять проверку параметров среды, определять аргументы jvm, а также предустановленные аргументы запуска вашего приложения и т. Д. Например, вы можете проверить каталог Tomcat catalina.bat или catalina.sh и посмотреть, что он делает.   -  person coolcfan    schedule 24.06.2012


Ответы (2)


Задача <java> не создает исполняемый файл jar. Он выполняет программу на Java.

Я не думаю, что можно указать параметры виртуальной машины при запуске исполняемого файла jar, дважды щелкнув по нему. Если вы хотите передать параметры виртуальной машины, откройте командную строку и выполните jar следующим образом:

java -XX:+HeapDumpOnOutOfMemory -jar nameOfTheJar.jar
person JB Nizet    schedule 22.06.2012
comment
См. Ответ @digitaljoel. И прочтите docs.oracle.com/javase/tutorial/deployment/jar/ appman.html - person JB Nizet; 22.06.2012

Ваш jar-файл является исполняемым, потому что у него есть главный класс, определенный в файле META-INF / MANIFEST.MF. Двойной щелчок по нему для запуска ничего не делает с Ant. Муравей просто используется для упаковки банки.

Чтобы добавить параметр и по-прежнему запускать с помощью двойного щелчка, вы можете создать ярлык, который запускает команду в ответе JB Nizet.

person digitaljoel    schedule 22.06.2012