黑马程序员-Java中设置Path、classpath的作用及实例

----------------------ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


新手在入门java时,往往很难成功编译并运行一个java程序。即使程序代码没有问题,却仍出现许多莫名其妙的问题。其实大多数的问题都可以归结于path、classpath环境变量的设置上。

Path环境变量:作用是指定可执行文件的搜索路径。当运行一个可执行文件时,系统会先在当前目录搜索该文件,若找到则运行它;否则,根据Path所设置的路径,顺序逐条地到各目录中搜索该文件。

classpath: 作用是指定类的搜索路径。当要使用已编译好的类时,JVM根据classpath顺序逐条地到各目录中搜索该类。


下面通过实例来详解Path和classpath的概念及容易出现的误区。

(本文中JDK1.70,安装路径为D:\Program Files\Java\jdk1.7.0_13。搭配EditPlus工具,实现java程序的编译和运行)

例1:path的作用

在EditPlus中输入以下代码:

class Test 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello!");
	}
}
保存为Test.java,并保存至D:\Test中。
在命令行中,执行命令
cd D:\Test
将当前路径转入D:\Test中。
执行命令
javac Test,java
出现了“'javac'不是内部或外部命令,也不是可运行的程序或批处理文件”的错误提示。因为此时系统在当期目录(D:\Test)及Path目录中无法找到javac.exe程序,自然无法执行javac Test.java命令。

解决方法:配置Path变量
1、右键“我的电脑”-“属性”-“高级系统设置”-“高级”-“环境变量”,进入环境变量设置页面。
2、在“系统变量”框中找到“Path”变量,并点击“编辑”按钮进行编辑。
3、将javac.exe、java.exe等程序所在的JDK路径(本文为D:\Program Files\Java\jdk1.7.0_13\bin)添加进"Path"中,以分号分隔。

重开一个命令行,重新执行
cd D:\Test
javac Test,java
无错误提示。再执行
java Test
显示“Hello!”。

注意:
1、地址之间用分号分隔;
2、可专门建一个“JAVA_HOME”变量,保存“D:\Program Files\Java\jdk1.7.0_13”。然后在"Path"中,添加“%JAVA_HOME%/bin;”,效果相同。
这样做可防止修改自己的地址时,误操作系统已有的地址。

至此成功编译并运行一个简单的java程序。其实,这涉及了两个重要问题:
1、系统是如何寻找“javac”、“java”等命令;
2、系统是如何寻找‘.java’及'.class'文件;
对于问题1,系统会现在当前目录寻找javac.exe、java.exe,若找不到则到"Path"变量设置的目录中寻找。因此需要将JDK的目录配置进“Path”中,这样即使在其他目录中,仍可以执行javac、java等命令。
对于问题2,此例无法表现。

例2:classpath的作用
同样是上述Test.java程序。
在命令行中,执行
cd C:
转入了C盘根目录,离开了存放源码的工作区。执行
javac Test.java
出现了“error: cannot read: Test.java”错误。说明系统可以执行javac命令,但找不到Test.java文件。

解决方法:指定路径,告诉它到d:\Test中找Test.java文件。
执行
javac  “d:\Test\Test.java”
无错误提示。

继续执行
java “d:\Test\Test.class”
出现了“Exception in thread "main" java.lang.NoClassDefFoundError: D:/Test/Test.class”错误。这是因为.java文件可以通过直接指定路径找到,而.class文件只能通过配置classpath来找到。

解决方法:配置classpath
1、在环境变量中新建一个“classpath”变量,添加“d:\Test”。作用范围:所有java程序。
2、在命令行中,执行
set classpath=d:\Test  作用范围:本命令行窗口内。

按方法1或2设置后,再执行
java Test 
显示“Hello!”。
3、在命令行中,直接执行
java -classpath “d:\Test” Test  作用范围:本条命令。
显示“Hello!”

注意:
1、set classpath时,多个地址之间用分号分隔;最后不要加分号,否则JVM会再去本地目录查找一次,而这不是我们希望的。
2、某些地址可以不加双引号,但一般来说,加双引号不易出错,也容易理解。

例3:java中使用了其他类的情况
在D:\Test中新建一个Person.java文件,代码如下:
public class  Person
{
	private String name;
	
	public Person(String name)
	{
		this.name=name;
	}

	public String getName()
	{
		return name;
	}
	public void setName()
	{
		this.name=name;
	}
}
然后,修改Test.java,代码如下:
class Test 
{
	public static void main(String[] args) 
	{
		Person p=new Person("Jack");
		System.out.println(p.getName());
	}
}
在命令行中,执行
javac "d:\Test\Test.java"
出现
d:/Test/Test.java:3: cannot find symbol symbol: class Person”错误。JDK提示找不到Person类。因此我们需要告诉JDK去哪里找到所用的类。

解决方法:
执行
set classpath=d:\Test
javac "d:\Test\Test.java"
无错误出现。执行
java Test
显示“Jack”。


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值