[英]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.