求问。linux 下 java 为什么不用设置classpath就能编译 或者默认jdk在哪?echo $JAVA_HOME 是空的

如果要添加自己的jar 除了它的路径外 还有原始的jdk 路径没

设置$JAVA_HOME的目的是通过这个变量获取编译器 javac 和可执行程序 java所在路径。通常是一些脚本或其他程序需要$JAVA_HOME,java或javac本身可以得到JDK相关的路径信息,不需要$JAVA_HOME。
Linux下,通过 PATH 中的路径搜索所有的可执行程序,如果可以搜索到 javac,那么就能进行编译,本身并不需要$JAVA_HOME。如果通过系统的包管理来安装的JDK,往往在系统路径/usr/bin或/usr/local/bin之类的都会包含javac的软链接。
调用javac时可以通过 -cp 添加自己的jar文件。JDK自身的路径由javac自己处理,并不会受影响。
温馨提示:答案为网友推荐,仅供参考
相似回答