【JAVA初学,容易理解】java环境变量配置问题

本文介绍了解决Java程序在命令行提示符下运行时出现的【错误:找不到或无法加载主类】的问题。主要原因是环境变量CLASSPATH未正确配置,导致JVM无法找到.class文件。文章详细介绍了如何检查和修改环境变量,以及JAVA_HOME和Path的配置方法。

今天用IDEA运行程序的时候,突然想用命令提示符来运行程序,然而吊诡的事就出在这里!在IDEA里面完全可以运行,但是却在命令提示符里显示【错误: 找不到或无法加载 主类 test】,如下图

下面是Test.java文件的存放路径和内容

public class Test{

    public static void main(String[] args){
        System.out.println("hello");
    }
}

以上我们可以看出我们在cmd执行命令的路径是没有错的,且文件也不存在package的问题,所以这时候我们主要想到的就应该是环境变量配置的问题了。

如何查看修改环境变量?

桌面右键点击“此电脑”进入属性,再在出现的页面中选中高级系统设置,再点击高级环境变量

 然后我们可以看到是ClASSPATH变量没有配置【.】也就是英文的句点。这个点表示当前路径。因为我们没有在CLASSPATH变量中添加 . ,所以我们的JVM在通过CLASSPATH查找类时会找不到,因为CLASSPATH的变量值里面根本就没有当前路径!但是你的.class文件又是在当前路径下的!

 

【改正方法】

1.选中CLASSPATH,点击编辑。

2.在路径的原基础上,最前面加上【.;】,即点和分号。分号切记不能忘!它是两个路径之间的隔断。

3.修改之后的CLASSPATH变量值是:

.;C:\Program Files\Java\jdk1.8.0_291\lib

注意:每个人分号之后的路径可能有所不同,这要根据你下载的jdk中lib的路径决定。

下面我们尝试一下修改之后是否可以成功运行java文件

在java文件所在目录下输入cmd,然后回车即可在该路径下打开cmd

 然后再次输入 java Test

 如此就可以成功运行啦!

其实,JDK在1.5之后的版本都不用设置CLASSPATH变量了,因为JVM会自动默认在当前路径查找类,但是如果你设置了CLASSPATH这个变量的值,那么JVM就会根据你设置的值(即路径)去查找类,如果找不到就会报错!所以你可以只设置Java_HOME和Path的值,这样也不会报错,反而更简单。在下面的相关知识扩展中会跟大家提到如何去设置环境变量,为什么要设置环境变量以及一些java程序的运行原理。

---------------------------------------------------------------------------------------------------------------------------------

【相关知识扩展】

 如何配置环境变量?

首先需要进入高级系统变量---->高级---->环境变量(在上文如何查看修改环境变量中有提到)

以下所提到的变量名在系统变量中没有就新建,有就直接编辑。

1.JAVA_HOME环境变量,值为JDK的安装目录。

2.Path变量值中追加JDk的bin目录。这里的方法跟上述方法一致,可以直接点浏览文件找到JDK的lib目录。唯一不同的是这里是追加,也就是新建一个变量值框去放lib目录,因为path变量常常在我们修改环境变量之前就已经存在了。

在JDK1.5之后,安装Java的开发环境,只需要配置上面两个内容即可。

为什么要去设置环境变量?

大家有没有思考过这样一个问题,为什么我们在cmd里面只要在该java文件的路径下输入javac  文件名.java就可以成功编译呢?即使javac.exe(javac的运行程序)跟java文件并不在同一个目录下,如图。这正是因为环境变量的作用。

那么javac的运行程序在哪呢?

javac的存放路径

 再上图我们可以清楚的知道java和javac程序都在我们jdk的bin目录下,而我们在设置环境变   量Path的值时也用到了jdk的bin目录。我们可以想到它们之间是一定存在某种关联的。

 那我们环境变量究竟是干什么用的呢?百度百科给我们的解释是,环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序所将使用到的信息。例如windows中的的Path环境变量,要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path指定的路径去找。

红字的部分帮我们很好的解决了这个困惑,虽然我们刚刚在用javac编译文件时只是在Test文件目录下进行的操作(),但是因为设置环境变量Path,所以我们在cmd运行时即使在当前路径没有找到javac.exe,也会在Path的指定路径jdk的bin目录()找到javac.exe,并成功运行。能使用java的命令也是这个原因。

通过以上的说明相信你对环境变量有了一定的了解。其实环境变量的作用就相当于为我们指明了一个重要目录,让我们想使用目录下的文件时的工序不用这么繁琐。

其实环境变量的运用还有很多。

我们最常见的就是我们win+R,输入cmd回车马上就可以运行cmd。就是因为我们的环境变量Path里面设置了 %SystemRoot%\system32,如图所示

 注:两个%引起来的是地址,SystemRoot(系统根目录)表示的是windows文件的地址。

然后我们去看看windows文件system32目录下有什么

 我们从上图可以看到,果然,我们的cmd.exe就在里面,所以这也就是为什么我们在我们的运行菜单里面直接输入cmd回车就可以直接使用该程序,而不用繁琐的去路径里面找到cmd.exe才能使用的原因。

java工作原理

1.java为什么可以实现跨平台工作?

我们先理解一下什么是平台和跨平台。平台就是指的操作系统,而跨平台就是说java程序可以在任意的操作系统上运行。

跨平台原理:java程序并非运行在操作系统当做,而是运行在JVM中。

所以我们在另外的操作系统当中想运行java程序的时候只需要下载与操作系统相对应的JVM版本就可以了。

2.java简单运行原理

java程序是运行在JVM中的,但是最开始的xxx.java文件属于【源文件】,无法被我们的JVM识别并执行。所以我们需要先通过JDK中的翻译工具将源文件翻译成让JVM可以识别并执行的文件,即我们所说的编译过程,编译成功后会产生一个xxx.class文件(又叫字节码文件),然后再通过我们java的运行工具告知虚拟机要运行哪一个.class文件,就可以成功运行了。

JRE(Java Runtime Environment):指java运行环境,包含JVM虚拟机及java核心类库(存放多个java文件的仓库)。

tip:在我们编写代码的时候就需要用到JRE里面的核心类库,比如String类。

JDK(Java Development Kit):是java语言的软件开发工具包,内部包含了JRE,和代码的编译工具(javac)运行工具(java)

tip:我们常常只需要安装JDK就可以了,因为JDK里面就有JRE(因为JDK的很多工具也是java程序也需要用到JRE中的核心库类,所以JDK里面自然就带了JRE),而JRE里面又有JVM。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值