Java命令也是SCJP必考內容,很有用處,即使你現在用的是IDE.
一、查看用法
C:\>Java -help
Usage: Java [-options] class [args...]
(to execute a class)
or Java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "clIEnt" VM
-server to select the "server" VM
-hotspot is a synonym for the "clIEnt" VM [deprecated]
The default VM is clIEnt.
-cp
-classpath
A ; separated list of directorIEs, JAR archives,
and ZIP archives to search for class files.
-D
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:
require the specifIEd version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:
-enableassertions[:
enable assertions
-da[:
-disableassertions[:
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:
load native agent library
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:
load native agent library by full pathname
-Javaagent:
load Java programming language agent, see Java.lang.instrument
這個命令幫助是英文的,不知道JDK咋搞的,也不妨礙使用。
另外,這個命令的非標准選項也是很重要的,常常在JVM優化配置方面很關鍵,可以參看本人的JVM參數配置文章。
C:\myproject>Java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:
set search path for bootstrap classes and resources
-Xbootclasspath/a:
append to end of bootstrap class path
-Xbootclasspath/p:
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:
-Xbatch disable background compilation
-Xms
-Xmx
-Xss
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
二、實踐
老規矩,主要看看裡面的參數(也叫開關)的使用。環境接著上篇Javac的環境。
1、無參數情況
2、-cp
運行Java要使用類的全名來運行。如果遇到文件夾,則需要-cp設置到頂級包下面,例如
3、-D
設置一個系統屬性,在運行時候,可以通過System.getPropertIEs()來獲取到。例如寫一段代碼:
package com.lavasoft;
import Java.util.PropertIEs;
/**
* 列舉系統的屬性
* User: leizhimin
* Date: 2008-11-12 21:25:08
*/
public class TestProperty {
public static void main(String[] args) {
//獲取系統屬性
Properties prop = System.getPropertIEs();
//輸出所有到一個流上,
prop.list(System.out);
}
}
如果在運行的時候加上一個參數-DmyProp=999999999,注意,中間不要添加任何空格。這樣就相當於設置了一個系統屬性myProp,其值為999999999.
一旦通過-DmyProp=999999999設置了這個系統屬性,在程序中就可以獲取到這個屬性。
3、程序入參
是在運行的時候,給main方法傳遞參數。為了測試先寫一個測試類。
package com.lavasoft;
/**
* 測試main方法的入參
* User: leizhimin
* Date: 2008-11-12 21:46:21
*/
public class TestMainVar {
public static void main(String[] args) {
System.out.println("入參列表如下:");
for(String arg:args){
System.out.println(arg);
}
}
}
4、其他的選項
有關選擇 客戶端/服務端VM、版本、運行在哪個版本下、是否使用斷言等一些不常用的選項。還可以查看
5、-verbose[:class|gc|jni]
查看虛擬機內部動作。