我最近问了一个关于一个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窗口中的显示方式答案 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 2001
是main
的命令行参数(因此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
,清单所在的位置。