Запуск Java из командной строки Windows

#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
    serverfoo_server.jar http://192.168.0.104:8000/foo_client_stubs/server_keycon
    sole_stubs.jar"
    Материалы, связанные с RMI
  • -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 , в которой находится манифест.