簡體   English   中英

從 windows 命令行運行 Java

[英]Running Java from the windows command line

我最近問了一個關於 java 程序的問題,我找不到起點,並被告知要查看啟動它的 bat 文件,但我不明白它在說什么。

該程序在 tomcat 服務器上運行,並且必須在 .jsp 頁面運行之前運行,因此它們不是起點。

任何人都可以解釋這意味着什么以及程序從哪里開始,以便我可以逐步完成。

D:\foo_development\server>java -Xmx256M -Djava.library.path=lib -Djava.rmi.serv
er.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:\foo_development\
server\foo_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

這正是我單擊 run.bat 后它在 cmd window 中的顯示方式

我們來分析一下命令行:

  • java :可執行文件
  • -Xmx256M : 使用多少 memory
  • -Djava.library.path=lib在哪里可以找到本地庫(用於 JNI)
  • -Djava.rmi.server.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:\foo_development\ server\foo_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 arguments 傳遞給您的main()方法

所以foo_server.jar是被執行的.jar 文件。 檢查它的META-INF/MANIFEST.MF是否有以Main-Class:開頭的行,這應該會告訴您執行了哪個 class。

D:\foo_development\server>java -Xmx256M -Djava.library.path=lib -Djava.rmi.serv
er.hostname=192.168.0.104 -Djava.rmi.server.codebase="file:/D:\foo_development\
server\foo_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

此命令運行帶有 arguments 109,8,201 的 foo_server.jar 文件。 和之前的所有其他 -jar 是 vm arguments 告訴 jvm 關於不同的 memory 大小,如堆內存大小和 aslo 庫路徑。

對於您的主要 class 您將在 MANIFIST 文件中找到它的條目作為Main-class:-- foo.bar.MainClass

簡而言之,你有

java -jar foo_server.jar 

rest 只是配置和 arguments。

在 foo_server.jar 中會有一個 MANIFEST.MF 文件,其中包含如下行

Main-Class: com.mycompany.foo.FooMain

這是 class 在加載時調用main(String[])的地方。

查看命令:

  • java是要運行的可執行文件( java.exe ,在路徑上找到)
  • -Xmx256M指定最大堆大小為 256 MB
  • -D (多次)定義各種Java系統屬性
  • -jar表示“加載給定的 jar 文件,並從其清單中Main-Class屬性指定的 class 開始
  • foo_server.jar是要加載的 jar 文件
  • 1098 2001是命令行 arguments 到main (所以args將是一個包含元素“1098”和“2001”的數組

關鍵部分是選項-jar foo_server.jar 這告訴 JRE 打開名為 JAR 的文件,從其元數據中讀取Main-Class屬性(在存檔的META-INF/MANIFEST.MF中)並執行該屬性(從其 static main方法開始,正常)。

jar 的主要 class 可以在此 jar 的清單中指定。 @見 http://download.oracle.com/javase/tutorial/deployment/jar/appman.html

在您的情況下,它是foo_server.jar 這個 jar(一個 jar 它只是一個 zip)必須有一個META-INF文件夾,清單所在的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM