#java
#java
Вопрос:
Недавно я спросил о программе Java, для которой я не мог найти начальную точку, и мне сказали посмотреть в bat-файле, который ее запустил, но я не понимаю, что там написано.
Эта программа выполняется на сервере tomcat и должна быть запущена до запуска страниц .jsp, поэтому они не являются отправной точкой.
Кто-нибудь может объяснить, что это значит и где запускается программа, чтобы я мог выполнить пошаговое руководство.
D:foo_developmentserver>java -Xmx256M -Djava.library.path=lib -Djava.rmi.serv
er.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:foo_development
serverfoo_server.jar http://192.168.0.104:8000/foo_client_stubs/server_keycon
sole_stubs.jar" -Djava.security.policy=conf/java.policy -jar foo_server.jar 109
8 2001
Именно так это отображается в окне cmd после того, как я нажимаю run.bat
Комментарии:
1. на будущее — download.oracle.com/javase/1.4.2/docs/tooldocs/windows /…
2. @MByD: на будущее: пожалуйста, ссылайтесь на текущую версию 😉 download.oracle.com/javase/6/docs/technotes/tools/windows /…
3. @Joachim — каждый раз, когда я не смотрю на номер, я получаю старые документы… Google! пожалуйста, начните давать ссылки на новый API!
4. @MByD: Я знаю, и меня это тоже раздражает. Обычно помогает добавление «/6» к условиям поиска. Кроме этого: если мы убедимся, что ссылаемся на текущие версии, Google должен начать подбирать и это.
Ответ №1:
Давайте проанализируем командную строку:
java
: исполняемый файл-Xmx256M
: какой объем памяти использовать-Djava.library.path=lib
где найти собственные библиотеки (для JNI)-Djava.rmi.server.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:foo_development
Материалы, связанные с RMI
serverfoo_server.jar http://192.168.0.104:8000/foo_client_stubs/server_keycon
sole_stubs.jar"-Djava.security.policy=conf/java.policy
какую политику безопасности использовать-jar foo_server.jar
файл JAR для выполнения! Это самое пикантное!109 8 2001
аргументы, переданные вашемуmain()
методу
Так foo_server.jar
выполняется файл .jar. Проверьте его META-INF/MANIFEST.MF
на наличие строки, которая начинается с Main-Class:
и которая должна сообщить вам, какой класс выполняется.
Ответ №2:
D:foo_developmentserver>java -Xmx256M -Djava.library.path=lib -Djava.rmi.serv
er.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:foo_development
serverfoo_server.jar http://192.168.0.104:8000/foo_client_stubs/server_keycon
sole_stubs.jar" -Djava.security.policy=conf/java.policy -jar foo_server.jar 109
8 2001
Эта команда выполняет foo_server.jar файл с аргументами 109,8,201. И все другие аргументы перед jar являются аргументами виртуальной машины, чтобы сообщить jvm о другом размере памяти, таком как heapmemory size и aslo путь к библиотеке.
Для вашего основного класса вы найдете его запись в файле MANIFIST как Main-class:-- foo.bar.MainClass
Ответ №3:
Короче говоря, у вас есть
java -jar foo_server.jar
Остальное — это просто конфигурация и аргументы.
В foo_server.jar появится файл MANIFEST.MF, который содержит строку типа
Main-Class: com.mycompany.foo.FooMain
Это класс, в котором main(String[])
вызывается при загрузке.
Ответ №4:
Глядя на команду:
java
является ли исполняемый файл для запуска (java.exe
, находится по пути)-Xmx256M
задает максимальный размер кучи 256 мегабайт-D
(несколько раз) определяет различные системные свойства Java-jar
означает «загрузить данный файл jar и начать с класса, указанногоMain-Class
атрибутом в его манифестеfoo_server.jar
загружается ли jar-файл1098 2001
являются ли аргументы командной строки дляmain
(такargs
будет массив с элементами «1098» и «2001»
Ответ №5:
Ключевая часть — это параметры -jar foo_server.jar
. Это указывает JRE открыть этот именованный JAR, прочитать Main-Class
свойство из его метаданных (в META-INF/MANIFEST.MF
архиве) и выполнить это (начиная с его статического main
метода, как обычно).
Ответ №6:
Основной класс jar может быть указан в манифесте этого jar. (@seehttp://download.oracle.com/javase/tutorial/deployment/jar/appman.html )
В вашем случае это foo_server.jar
. У этого jar (jar- это просто zip) должна быть папка META-INF
, в которой находится манифест.