java配置lib_JAVA环境配置详解

JAVA环境配置总结:

JDK:一般有bin,include,jre,lib

一、环境变量:

在系统环境变量中添加D:\JDK\bin和D:\JDK\jre\bin

新建系统变量CLASSPATH值为:.(在cmd中执行命令java Classname时的查找路径)

查看:java,javac,java -version

二、JAVA文件加载

java是通过java虚拟机来解释运行的,也就是通过java命令,javac编译生成的.class文件,就是虚拟机要执行的代码, 称之

为字节码(bytecode), 虚拟机通过 classloader来装载这些字节码。

classloader 从哪里知道java本身的类库及用户自己的类在什么地方呢?

一缺省值(当前路径)

二有一个用户指定的变量来表明,这个变量就是类路径(classpath)

三在运行的时候传参数给虚拟机。

编译的过程和运行的过程大同小异,只是一个是找出来编译,另一个是找出来装载。

实际上java虚拟机是由java luncher初始化的,也就是java(或java.exe)这个程序来做的。

虚拟机按以下顺序搜索并装载所有需要的类:

一引导类: 组成 java 平台的类, 包含 rt.jar 和 i18n.jar 中的类

二扩展类: 使用 java 扩展机制的类, 都是位于扩展目录($JAVA_HOME/jre/lib/ext)中的.jar档案包

三用户类: 开发者定义的类或者没有使用java扩展机制的第三方产品。你必须在命令行中使用-classpath选项

或者使用CLASSPATH 环境变量来确定这些类的位置.

一般来说,用户只需指定用户类的位置,引导类和扩展类是"自动"寻找的。

用户类具体怎么找的?其可能的来源有:

一".", 即当前目录, 这个是缺省值.

二CLASSPATH环境变量, 一旦设置, 将缺省值覆盖.

三命令行参数 -cp 或者 -classpath, 一旦指定, 将上两者覆盖.

四由 -jar 参数指定的 .jar 档案包, 就把所有其他的值覆盖, 所有的类都来自这个指定的档案包中.

进入类所在的目录

使用参数-cp或-classpath

编写脚本

如果你发现正确安装后, 不能正常工作, 就把tools.jar 加入 CLASSPATH, 试一下

三、参数-cp和-classpath

(1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java

(2).相对路径:javac -classpath ../junit3.8.1/Junit.javr Xxx.java

(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找)

java -classpath的使用:

java:假设我们的CLASSPATH设置为:D:\java ,在该目录下有三个文件:

HelloWorld.java :public class HelloWorld

HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld

HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase

假设我们已经按照上面关于javac -classpath和javac 绝对路径的使用,顺利地完成了三个文件地编译。

现在我们在C:/Documents and Settings/peng>目录下执行这三个.class文件

(1).C:\duan>java HelloWorld

Hello World

在系统变量CLASSPATH中指向了目录:D:\java

所以JVM会默认去该目录下加载类文件,而不需要指定.class文件的绝对路径了。

(2).C:\duan>java HelloWorldExtendsHelloWorld

Hello World

HelloWorldExtendsHelloWorld继承了HelloWorld类,所以在执行时JVM会先查找在CLASSPATH下是

否存在一个HelloWorld.class文件,因为我们已经成功编译了HelloWorld 类了,所以可以成功

执行HelloWorldExtendsHelloWorld.class

(3).C:\duan>java HelloWorldExtendsTestCase

Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase

提示找不到junit.framework.TestCase文件。因为:junit.framework.TestCase.class文件并不存在于当前目录下(存在%CLASSPATH%\test),所以

为了能够让程序成功运行,必须通过指定CLASSPATH的方式,让JVM可以找到junit.framework.TestCase这个类。

(4). C:\duan>java -classpath %CLASSPATH%\test HelloWorldExtendsTestCase

Hello World

总结:

(1)何时需要使用-classpath:当你要编译或执行的类引用或继承了其它的类,但被引用类的.class文件不在当前目录下时,就

需要通过-classpath来引入类

(2)何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的

路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值