javac和java命令行中的-classpath选项
javac
和
java
命令行中的
-classpath
选项
这是个很基础的问题,但是因为基本上都是用现有的IDE
工具 来开发java程序,所以很少有人意识到这一点先来看几个小例子:
一、测试java命令中的-classpath参数
1. 编写Hello.java
2.将Hello.java文件拷贝到某个目录中,假设目录为:d:/test1/src/com/cn/andy
3. windows环境进入到cmd,进入到d:/test1/src/com/cn/andy,
执行javac -d d:/test1/target Hello.java
此时target目录中将生成com/cn/andy/Hello.class
此处需要了解下面的命令:
javac-d destdir srcFile
其中:1、-d destdir是用来指定存放编译生成的.class文件的路径。(若此选项省略,那么默认在当前目录下生成.class文件,并且没有生成包文件夹;当前目录可以用“.”来表示,即:javac -d . srcFile )
注意:添加-d选项除了可以指定编译生成的.class文件的路径外,最大的区别是可以将源文件首行的package关键字下的包名在当前路径下生成文件夹。
4.进入d:/test1/target
执行java com.cn.andy.Hello
此时应该会正常输出hello world!
思考:
1、
为什么java
命令会找到当前目录下的com/cn/andy/Hello.class文件?因为当前环境变量的classpath
属性设置为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
如果把.;
去掉则无法执行,此时如果执行java -classpath . com.cn.andy.Hello则还可以正常执行
2、
同样,如果将d:/test1/target
目录设置进classpath环境变量中,则在任意的目录中执行javacom.cn.andy.Hello都可以正常执行
二、测试javac编译命令中的-classpath参数
1.编写User.java
3、 编写Hello2.java
4、 将classpath环境变量完全清除
5、 进入到d:/test1/src/com/cn/andy目录,执行javac -d d:/test1/targetHello2.java
6、 执行javac -classpath d:/test1/src -d d:/test1/target Hello2.java编译成功
(1).
何时需要使用-classpath
:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类(2).
何时需要指定路径:当你要编译的类所在的目录和你执行javac
命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
- Java工程师成神之路(2018修订版)
- Java 日志框架:slf4j 作用及其实现原理
- java初学者,学到迷茫如何坚持下去?
- php android的需求远大于java并且起薪都不错,java还有很好的前
- 3 月 15 个有意思的 JavaScript 和 CSS 库
- 密谋:如何推翻Java的统治地位?
- V8 JavaScript 引擎 6.6 发布,异步性能大幅提升
- 到底学Python还是Java?一张图PK明白!
- 安卓用 Java API 侵权,谷歌或赔甲骨文 88 亿美元
- Java和Android的数据类与处理类