这几个命令都是安装 jdk 就有。
javac命令作用:将java文件编译为class文件。
常用操作举例:
# 将HelloWorld.java编译为HelloWorld.class文件 javac HelloWorld.java # 执行 java HelloWorldjava命令
作用:执行class、jar文件。
java -jar xxx.jar # 给 main 方法传的参数 java -jar xxx.jar param1 param2 # java -cp 命令举例 java -cp .;myClass.jar packname.mainclassname java -cp .;c:classes01myClass.jar;c:classes02*.jar packname.mainclassname # 将lib下的所有jar文件以及etc下的所有配置文件添加到 classpath 中,并在classpath 中寻找 com.Start类(main方法类)并运行 java -cp lib/*;etc/ com.Start param1 param2
java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类。
分隔符:window上分号“;” ,linux上分号“:”
jar命令注意:jar 文件引入classpath,通配符不能写成 .jar, 只能使用 * 或 123
注意:配置文件引入classpath,只能写到目录 /, 不能添加 *
作用:将编译好的程序打包成jar文件。
CLASSPATH系统变量为类查找路径
1、在使用 javac 进行编译时遇到 import 时候就会通过这个变量里面配置的路径去查找。如果配置的是目录,则会查找目录下的 .class 或 .java(.java会自动编译出.class)的类文件,如果是 .jar 文件,则会引用.jar中的类,也可以通过 javac -cp 进行指定 CLASSPATH
2、使用 java 运行 java 程序的时候 import 类的查找顺序为:
- jre/lib 中的*.jar,或被 -Xbootclasspath 参数指定的路径中的.jar(由启动类加载器加载)
- -jre/lib/ext 子孙目录中的 .class 和子文件中的 *.jar 文件,或者由 java.ext.dirs系统变量指定的目录和文件(扩展类加载器加载)
- CLASSPATH中配置目录的子孙目录中的.class和配置的.jar中的类(应用程序类加载器加载)
配置CLASSPATH的开头使用.;表示在使用java或javac优先从当前目录查找类资源;tools.jar 是系统用来编译一个类的时候用到的,jps,javap,jstat,jstack等Java工具也使用到了tools.jar中的一些api,其实使用javac命令进行编译的时候已经封装了tools.jar,所以可以不用配置到CLASSPATH中;
3、为什么安装完jdk后不配置环境变量就能直接运行java,而不能运行javac?在安装jdk的时候jdk会自带一个jre(java运行环境),还会单独安装一个jre,默认路径是和jdk在同级目录,而且会将这个jre/bin/java.exe拷贝一份到C:WindowsSystem32目录中,而这个目录在系统安装的时候就被配置到了环境变量中,所以能运行java。
不能运行javac是因为javac.exe是位于%JAVA_HOME%bin目录下面,这个可执行文件没有被配置到环境变量PATH中;



