从Windows命令行运行Java

时间:2011-05-03 09:58:30

标签: java

我最近问了一个关于一个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窗口中的显示方式

6 个答案:

答案 0 :(得分:2)

让我们分析一下命令行:

  • java:可执行文件
  • -Xmx256M:要使用多少内存
  • -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个参数传递给您的main()方法

所以foo_server.jar是执行的.jar文件。检查其META-INF/MANIFEST.MF是否有以Main-Class:开头的行,该行应该告诉您哪个类已被执行。

答案 1 :(得分:1)

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

此命令运行带参数109,8,201的foo_server.jar文件。之前所有其他-jar都是vm参数,告诉jvm不同的内存大小,如heapmemory大小和aslo库路径。

对于您的主类,您将在MANIFIST文件中找到其作为Main-class:-- foo.bar.MainClass

的条目

答案 2 :(得分:1)

总之,你有

java -jar foo_server.jar 

其余的只是配置和参数。

在foo_server.jar中会有一个MANIFEST.MF文件,其中包含一行

Main-Class: com.mycompany.foo.FooMain

这是加载main(String[])时调用{{1}}的类。

答案 3 :(得分:1)

查看命令:

  • java是要运行的可执行文件(java.exe,位于路径上)
  • -Xmx256M指定最大堆大小为256兆字节
  • -D(多次)定义各种Java系统属性
  • -jar表示“加载给定的jar文件,并从其清单中的Main-Class属性指定的类开始
  • foo_server.jar是要加载的jar文件
  • 1098 2001main的命令行参数(因此args将是一个元素为“1098”和“2001”的数组

答案 4 :(得分:1)

关键部分是选项-jar foo_server.jar。这告诉JRE打开那个命名的JAR,从其元数据中读取Main-Class属性(在归档的META-INF/MANIFEST.MF中)并执行它(从静态main方法开始,正常)

答案 5 :(得分:1)

jar的主类可以在这个jar的清单中指定。 (@see http://download.oracle.com/javase/tutorial/deployment/jar/appman.html

在您的情况下,它是foo_server.jar。这个jar(一个jar只是一个zip)必须有一个文件夹META-INF,清单所在的位置。