命令行运行Java的几种方式
Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file)
?
>>运行依赖于第三方包的jar
pausee:cd E:\workspace\000MavenProject\biz-rds\cronset classpath=./biz-rds.jar;./jbossall-client.jarjava -Drds_jnp=localhost:1100 com.synnex.biz2.rds.cron.retire.Startuppause
或者:
pausee:cd E:\workspace\000MavenProject\biz-rds\cronjava -Drds_jnp=localhost:1100 -classpath biz-rds.jar;jbossall-client.jar com.synnex.biz2.rds.cron.retire.Startuppause
?
>>运行Class
在包的根目录下[E:\workspace\000MavenProject\biz-rds\target\test-classes]运行下面命令:
java -Drds_jnp=1111 com.aaa.biz2.rds.Temp 123 dasf
输出:
rds_jnp:1111123dasf
Temp源码:
package com.aaa.biz2.rds;public class Temp { public static void main(String[] args) { System.out.println("rds_jnp:" + System.getProperty("rds_jnp")); if (null != args) { for (String arg:args) { System.out.println(arg); } } else { System.out.println("args is null"); } }}?>>运行指定了MainClass的jar包
META-INF/MANIFEST.MF
Manifest-Version: 1.0Ant-Version: Apache Ant 1.7.1Created-By: 1.5.0_14 (Sun Microsystems Inc.)Main-Class: com.aaa.rds.engine.StartupClass-Path: ./lib/mail.jar ./lib/jbossall-client.jar ./lib/activation. jar
Java 命令:
java -Drds_jnp=fca-vm-rds-prod1:1100,fca-vm-rds-prod2:1100,fca-vm-rds-prod3:1100 -jar RDSCron.jar
?
>>运行未指定MainClass的jar包:
Java 命令:
java -classpath biz-rds.jar com.aaa.biz2.rds.Temp 123 aaa
输出:
rds_jnp:null123aaa
?
>>关于参数传递:
1,通过系统变量传递:
-Drds_jnp=fca-vm-rds-prod1:1100,fca-vm-rds-prod2:1100,fca-vm-rds-prod3:1100
获取方式:
String providerUrl = System.getProperty("rds_jnp");2,通过Main方法传入:
java com.aaa.biz2.rds.Temp 123 dasf或者:
java -jar RDSCron.jar 123 dasf获取方式:
public static void main(String[] args) { if (null != args) { for (String arg:args) { System.out.println(arg); } } else { System.out.println("args is null"); } }???>>相关信息:
jar 分可执行jar 和非可执行jar 一个可执行的 JAR 必须通过 menifest 文件的头引用它所需要的所有其他从属 JAR。如果使用了 -jar 选项,那么环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略。 (http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html)所以我设置的classpath无效。
?
?