2012-06-22 4 views
0

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

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

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

Спасибо!

+0

Пожалуйста, напишите содержимое build.xml. Вы получите быстрые ответы. – Jayan

+0

Ответ JB Nizet говорит правду. Кроме того, вы можете написать стартовый скрипт, чтобы запустить приложение. Стартовый скрипт обычно является файлом .bat, .cmd (Windows) или .sh (* nix), в котором вы можете выполнить проверку параметров среды, определить аргументы jvm, а также предустановить начальные аргументы вашего приложения и т. Д. Например, вы можете проверить Catalina.bat или catalina.sh Tomcat и посмотреть, что он делает. – coolcfan

ответ

1

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

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

java -XX:+HeapDumpOnOutOfMemory -jar nameOfTheJar.jar 
+0

См. Ответ @ digitaljoel. И прочитайте http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html –

1

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

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