Android开发检测不到JDK的原因

 

目录

Warning

一、配置

二、解释

1.path变量:

(0)如果没有classpath

(1)配置path变量的目的

2.配置classpath变量:

(0)如果没有classpath

(1)配置classpath的目的

(2)classpath变量?

3.配置JAVA_HOME变量:

(1)为什么要配置?

4.测试JDK是否安装成功


Warning

  • 从jdk-9之后就已经没有tools.jar和dt.jar了,也不需要在classpath里面配置这些jar了
  • 但安装了jdk10没有问题,输javac,java -version能显示成功,eclipse能运行,Android Studio也能运行,但是Android SDK失败,只识别jdk8即1.8版本及其以下版本。

Android开发检测不到JDK的原因_第1张图片

图为JDK1.8


一、配置

 

变量名: JAVA_HOME

变量值:

C:\Program Files\Java\jdk1.8.0_221

变量名: PATH

变量值: 

C:\Program Files\Java\jdk1.8.0_221\bin

变量名: CLASSPATH

变量值:

.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;

 

二、解释

1.path变量:

(0)如果没有classpath

假设我们要运行一个JAVA程序(hello.java)就要先把它的class文件移动到JAVA里的bin目录下  然后打开DOS,把路径改到JAVA的BIN目录下执行java hello.class,一次无所谓,但是每次都要这样去做未免太麻烦。

还好WINDOWS提供了一个PATH环境变量,他的作用就是现在这个变量的值路径中去找,如果找到了要运行的EXE就运行,否则失败。如果我们把JAVA里的bin目录这个路径赋给path那么下次我在运行java这个命令的时候,即便是直接输入DOS也能够在path变量中找到JAVA的bin目录下的java指令了。

(1)配置path变量的目的

电脑系统将根据该变量的值找到java编程中需要的一些程序,比如java、javac、javah程序等等,其中javac程序是用于编译java源代码,java程序是用于执行后缀为class的代码。设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。

 

2.配置classpath变量:

(0)如果没有classpath

“假设我们要运行一个JAVA程序(hello.java)就要先把它的class文件移动到JAVA里的bin目录下”,为什么要这样做呢?因为我们在用到java hello.class这条指令的时候,DOS不知道hello.class这个文件在哪里,他就先到当前目录中去找,如果找到就运行,否则失败。当然,如果说hello.java在D盘根目录下,你也可以用java D:/hello.class这条指令来运行,

但是每次这样做也确实够麻烦。WINDOWS就提供了这样一个环境变量——classpath,如果没有就应该新建一个。我们把D:/这个路径赋值给classpath,那么下次在运行java hello.java的时候就先在当前目录中到,如果找到就运行,如果找不到就在classpath的值路径下去找,找到就运行,找不到就失败。

 

(1)配置classpath的目的

一是,配置classpath变量,才能使得java解释器知道到哪里去找标准类库(告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包),这些标准类库是别人已经写好了的。比如我们常用到java.lang包中的类,在配置classpath变量后被设为默认导入,所以在写程序时就不用import这个包了。那么这些标准类库在哪呢?在以JDK的lib目录下以jar为后缀的文件中:一个是dt.jar,一个是tools.jar。

二是,设置Path变量是为了让操作系统找到指定的工具程序(以.exe文件存在),则设置Classpath的目的就是让Java执行环境找到指定的Java程序(以.class文件存在)。

事实上JDK 5.0默认就会到当前工作目录(上面的.设置),以及JDK的lib目录(这里假设是C:\Program Files\Java\jdk1.5.0_06\lib)中寻找Java程序。所以如果Java程序是在这两个目录中,则不必设置Classpath变量也可以找得到,将来如果Java程序不是放置在这两个目录时,则可以按上述设置Classpath。

设置Classpath的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序(.class文件)。

 

(2)classpath变量?

(注意,CLASSPATH最前面是有个 “.”的,表示当前目录。用两个%包围JAVA_HOME这个变量的意思是引用变量的值,当然如果你不想这样做,也可以这样配置classpath的值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar; 也就是用JAVA_HOME变量的值替换%JAVA_HOME%);

3.配置JAVA_HOME变量:

(1)为什么要配置

一是为了方便引用,比如,JDK安装在C:\Program Files\Java\jdk1.5.0_17目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃! 三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你不能正常使用该软件

4.测试JDK是否安装成功

在运行中输入cmd

然后输入

java –version

看看是否能显示出您所配置的java版本


【参考文献】

百度知道,yp0123456789,https://zhidao.baidu.com/question/351360646.html

百度知道,dear学会微笑ba,https://zhidao.baidu.com/question/1605930365893725827.html

百度百科,https://baike.baidu.com/item/CLASSPATH/5734076?fr=aladdin

百度百科,https://baike.baidu.com/item/PATH/7287515#viewPageContent

csdn,莫名守候,https://blog.csdn.net/fb281906011/article/details/8057672

csdn,mandalaqaz,https://blog.csdn.net/qiudw/article/details/2282909

csdn,https://bbs.csdn.net/topics/392347025

你可能感兴趣的:(Android,Java)