栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java:javac、java、jar命令的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java:javac、java、jar命令的区别

这几个命令都是安装 jdk 就有。

javac命令

作用:将java文件编译为class文件。

常用操作举例:

# 将HelloWorld.java编译为HelloWorld.class文件
javac HelloWorld.java
# 执行
java HelloWorld
java命令

作用:执行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 文件引入classpath,通配符不能写成 .jar, 只能使用 * 或 123
注意:配置文件引入classpath,只能写到目录 /, 不能添加 *

jar命令

作用:将编译好的程序打包成jar文件。

疑问 1、配置CLASSPATH系统变量作用?

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中的类(应用程序类加载器加载)
2、为什么CLASSPATH配置 “.;” 和;tools.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中;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号