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