先连接三个博文,看看吧。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/EvilSlyvanas/article/details/79578776
————————————————
分类专栏: java
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43278826/article/details/84870319
————————————————
版权声明:本文为CSDN博主「潇曜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
分类专栏: JAVA
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lwj_199011/article/details/51838677
————————————————
版权声明:本文为CSDN博主「Jack_Lee_90」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lwj_199011/article/details/51838677
原文链接:https://blog.csdn.net/qq_43278826/article/details/84870319
版权声明:本文为CSDN博主「一只笨鸟丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/EvilSlyvanas/article/details/79578776
不看也行,我总结:javac是一个可行性编译程序文件,可以编译java文件。
cd 命令进入指定的目录
无论你进入哪个目录,你都可以执行javac这个程序来编译任意位置的java文件 。
只要你的path变量设置好了!
然后,你在cd进入不同的目录下执行javac有什么影响呢?
来看个项目结构
这里我们先进入src目录
再说一次:无论你进入哪个目录,你都可以执行javac这个程序来编译任意位置的java文件 。
只要你剩下的目录补齐了,或者用绝对的路径,绝对就可以帮助javac找到你想要的编译的java类!
但是:重点来了:你在cd进入不同的目录下执行javac有什么影响呢????
就是你cd进一个c盘随便一个目录,,也可以编译这个文件,进入d盘也可以编译文件,只要我给对路径就可以了。
但是是有区别的!!
https://blog.csdn.net/EvilSlyvanas/article/details/79578776
这个博文中提到一个很重要的点:
编译.java文件时,它根据我们的-classpath路径去寻找相关的类,而-classpath默认是先从当前路径开始寻找。
再说一次:
编译.java文件时,它根据我们的-classpath路径去寻找相关的类,而-classpath默认是先从当前路径开始寻找。
javac 后面只要相对于当前你调用javac的位置而言,的相对路径就可以找到你想要的类!
javac 后面补充相对路径即可!编译出来的class文件在你不设置位置的情况下,就放在和java文件相同的位置。
如何设置class文件放哪呢?使用-d参数!
在c:盘下生成了一个文件夹和class类
文件夹的名字叫bao1
为什么javac要帮你生成bao1这个文件夹呢?明明我设置的位置是c盘!
这取决于
这语句package bao1;说明了这个生成的类一定要放在这个文件夹下,当javac按照你给-d指令来到c盘,发现没有bao1的文件夹,package bao1;语句又说要把这个类放在这个文件夹下面,所以它就创建一个放进去!
好了,再一次回顾一下,当我们进入src文件时候,
在输入这个指令的时候。
为什么class类会将class类生产在java文件的相同的文件下呢?
当我们没有指定-d参数的时候,-d参数默认是当前cd进入的文件夹!再说一次:
当我们没有指定-d参数的时候,-d参数默认是当前cd进入的文件夹!
当javac在src文件夹下运行,发现已经存在bao1的文件夹了,所以它直接打开放进去就可以了!
在很多的博客中有这样的一句话:-d . 后面加个点是代表当前目录!我也补充一下哈哈
总结一下:类的package 语句要考虑这句话有什么用呢?
就是用于编译的时候保证这个类放在这个包下面!这个生成的class类一定是在你package声明的文件夹下,没有都要给你创建出来!打死也要放里边!
至于为什么打死都要放指定的文件夹下,因为保证import的语句的正确执行导包了.
好了再次回到-classpath参数
编译.java文件时,它根据我们的-classpath路径去寻找相关的类,而-classpath默认是先从当前路径开始寻找。
这个参数是用来设置指定编译java源文件需要依赖的.class文件的路径。会按照你当前进入的目录cd进入的目录,加上这个java文件import语句,相对于现在调用javac程序的目录的相对定位去找class文件!
-cp 是给你继续去添加这类所依赖的jar包所在位置!你可以使用相对位置,也可绝对位置。
再说一次:编译这个类的时候会按照import语句去相对于当前位置找对应的class文件!如果在这路径找不到依赖的class文件,会在这个路径下去找同名的java文件,并将其一并编译成class文件保存到-d的参数指定的位置。
如果还找不到就去-cp你设置的目录找,还没找到,就准备收bugger通知书了!
总而言之,这个javac就是将你所给的某一个java类按照import语句将这个类和这个类所依赖的类全部编译到你设置的-d目录下!
编译的时候还会自动帮你构建好包的结构!形成项目包结构!保证了当你执行java命令的时候,这个类可以按照包名找到对应的class文件!