Java路径配置

JDK6.x环境变量配置

1.新建JAVA_HOME = E:\development\Java\jdk1.6.0_27

2.新建CLASSPATH =.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\l\lib\tools.jar

3.追加PATH = %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

说明:

JAVA_HOME改成你自己的JDK的安装路径,其它不用改。

CLASSPATH开始必须是  .; 否则控制台下执行你指定路径的.class文件时找不到。

PATH有点小区别,就是追加的位置。在默认的PATH中包含了C:\Windows\System32这个路径,细心的人一定会发现原来安装JDK和myeclipse的时候,在系统文件夹下还添加了这些东西,这不就和JDK安装目录里有些相同吗?相同吗!?

所以这里的区别就是PATH中指定的先后顺序的问题了。PATH中的先后决定了控制台下执行时哪个javac.exe和java.exe被执行。善于倒腾的人一定会去尝试追加的位置的先后所带来的不同,留个迷。详见下文叙述。(我把上述PATH的内容加在了前面。)

 

测试安装是否成功:

cmd进控制台下输 java –version

哦,这一句又是调用哪个java.exe的呢???

看到了吧,第一行故意输错,就是要显示那句"不能创建JVM实例",明白了吧。原来执行字节码是需要创建JVM实例的呦。接着输入,如果返回版本信息就是安装配置成功了。

 

测试例子:

假如:HelloWorld.java文件路径是F:\HelloWorld.java

HelloWorld.java文件内容是:

public class HelloWorld {

    public static void main(String[]args) {

        System.out.println("---Congratulation foryou!---");

    }

}

则控制台下进F盘:

F:\>javac HelloWorld.java    说明:javac是对HelloWorld.java文件进行“编译”

F:\>java HelloWorld          说明:java 是对HelloWorld.class文件进行解析执行。

 

Java中的死规定: .java文件中的最外层的public类要和此文件同名。所以最外层只能是多有一个public类。当然如果此.java文件中没有public类,则此.java文件中所有的类名称都可以与文件名不同,main方法也可以在任意的类中,也可以都有main。编译时javac是对.java源文件进行的,而运行时java是对包含main方法的编译过的字节码文件进行的,只是省了.class。.java文件中有几个类(包括内部类、匿名类)就生成几个.class文件。

 

只所以能这么用是因为E:\development\Java\jdk1.6.0_27\bin目录下有java.exe和javac.exe两个可执行文件那是因为你配置了PATHCLASSPATH。其中这两个路径下有JVM启动时必须要加载的类的字节码文件和必须要使用的.exe应用程序。所以到这里你也就知道了执行Java程序的JVM并不是Java语言写出来的,而且JVM是不开源的,并且JVM也是不具有跨平台特性的(你下载JDK的时候要选OS版本,就该想想了吧,呵呵)。

 

对main方法的一点说明:

main方法是Java程序的唯一入口,不同于其它任何static方法。(JVM底层实现的指令完全不同。)至于Java Web应用中的main方法,呵呵,自己去琢磨框架吧,仍然是靠main启动的,你的不经意的配了下配置文件,它就有了,哈哈。

另外给大家补充一点关于JVM的,很多书上都没有。当Java应用程序启动后(main方法没有退出之前),操作系统的进程中是有javaw.exe这个进程的。这个进程也就是JVM对应的进程。也就是说整个JVM都是由这个进程完成的。查看这个进程的进程号PID的办法,任务管理器,先点“进程”,后点“查看”,“选择列”,打开的界面上,勾上PID(进程标识符)。

然后点任务管理器上的“文件”,“新建任务”,输出jconsole PID(比如我的javaw.exe的PID是4444,则输入jconsole 4044),马上会打一个界面(窗体名称:Java监视和管理控制台),此界面中描述了当前JVM相关的一些信息,有兴趣的可以看看。当你的应用程序出现堆栈溢出的问题时,不防去看看实际的使用情况,也可根据实际情况手工修改堆栈的大小。

如果要显示当前堆栈中的具体信息,不妨查看jmap ,jhat的用法。对于刚学的新手,鄙人在这里不介绍了,用起来也很方便。

例如:

 

如果用IDE((my)eclipse)顺便把自带的IDE的JDK改成自己的吧。原来的我删掉了。

依次改:

=============================如果用到Tommcat==================================

TOMCAT的配置

同JDK的环境变量一样,加入下面三个。具体路径对你解压的路径(注意解压时,有可能是创建了两级目录,确保你的路径下是bin,lib,conf等目录)。

TOMCAT_HOME=E:\development\tomcat\apache-tomcat-6.0.32

CATALINA_BASE= E:\development\tomcat\apache-tomcat-6.0.32

CATALINA_HOME=E:\development\tomcat\apache-tomcat-6.0.32

如果是在IDE(如(my)eclipse)中使用Tomcat,记得把Tomcat的JDK改为你安装的JDK。

欢迎高手加入Q群:47427371 ,共同交流,共同学习。

配置完成后测试是否成功:

打开bin目录,双击运行startup.bat批处理文件(如果只是startup,没有.bat请确认你有没有隐藏文件名后辍,这个不用教吧)。你会发现启动Tomcat的过程,启动完成后,不要关闭打开的Tomcat窗口(如果关闭了窗口表示你关闭了服务器。)。

然后打开浏览器输出http://localhost:8080或者http://127.0.0.1:8080看到一英文的介绍Tomcat的页面说明你安装成功了(如果http://127.0.0.1:8080没有打开页面,请确认你的C:\Windows\System32\drivers\etc目录下的hosts文件中配置了127.0.0.1 localhost 要是你没有修改它的权限,自己看着办吧,呵呵,要获得权限很容易,学计算机的你懂的。)。

 

如果要修改访问端口,打开conf目录下的server.xml,端口为8080的改成你自己想用的端口。修改其它端口配置详见Tomcat说明。

 

 

 

 

 

 

 

======================================================================

 

大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。

因为这样更能帮助大家弄清楚它们的区别:

 

 Jre   jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。

 

 Jdk   是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre.     那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll。说明是有两个虚拟机的。这一点不知道大家是否注意到了呢?

 

相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm,而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

 

没有设置jre/bin目录到环境变量中啊?

系统环境变量的 path最前面有“%SystemRoot%\system32;%SystemRoot%;”这样的配置,那么再去Windows/system32下面有一个java.exe

 

 

 

 

 

 

======================================================================

 

"两个jre""三个lib"的功能简单扼要的解释

 

    安装JDK后,Java目录下有jdk和jre两个文件夹,但jdk下还有一个jre文件夹,而且这个jre比前面那个jre在bin目录下多了个server文件夹!

    普通用户装jre即可开发人员需要安装jdk,其中包括jre。所以jdk目录下包括jre目录。两个jre大体相同,有细微的差别。

    两套 jre ,是针对不同的工作职责!不同的 jre 负责各自范围的内容。

    当用户只需要执行 java 的程序时,那么C:\ProgramFiles\Java\jre1.5.0_08的 jre 就 ok !

    当用户是 java 程序员,则需要 java 开发环境。编译时,系统就会优先去找C:\ProgramFiles\Java\jdk1.5.0_08\bin下的“ java 、 javac ”这些命令所在目录或者他们的父目录的 jre 。即开发环境下运行的是jdk 下的 jre 。

 

再说三个lib目录:

   JDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件。例如,编译器等。

   JRE下的lib只是运行java程序的jar包,是为JVM运行时候用的。包括所有的标准类库,和扩展类。

   JDK下的JRE下的lib是开发环境中,运行时需要的jar包。最典型的就是导入的外部驱动jar包。因为编译时,系统找的是jdk下的jre。而不是最外层的jre。

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

    最后我在这里补充几点:

   1. 在使用Eclipse的时候不需要指定的CLASSPATH,Eclipse会自己搜索.

2.独立目录下的jre是通用jre,安装时是可选的(选择了,则会覆盖已有版本)。jdk目录下的jre则是必须的。如果你在eclipse里指定jdk的路径(jre的路径不用你指定,会自己去找的),那么用的就是这个jre。而java, web,start等,用的则是通用jre。

 

 

 

 

======================================================================

 

对于JDK与JRE的关系以及path的配置问题首先我们来看下一些概念:

JDK  JRE   JVM

   

JDK 

   

++ 

   

  |-----JRE 

   

          ++  

   

            |-------JVM 

    

            |-------

   

JDK与JRE的关系以及path的配置中,JRE只是JDK的一个部分,我们只要拥有了一份JDK就可以进行Java程序开发了,而顾名思义,JRE是Java运行的时候所依赖的平台,JVM则更只是JRE的一个部分,JRE除了虚拟机外还提供了众多链接库,这些库会被JVM在运行时调用。

 

我们会发现java_home/下有一个bin文件夹和一个JRE文件夹,而JRE文件夹下也有一个bin文件夹,它们一样吗?显然不一样。

 

java_home/bin中的工具是sun公司提供给我们一些工具,如java.exe,javac.exe,而jre/bin下的工具是运行时所需的,于是我们可以发现java_home/bin下有一个javac.exe,而jre/bin下肯定没有javac.exe,这是很容易解释的。

 

奇怪的是,Sun公司给我们提供了两套JRE,稍留意一下我们就会发现在装完JDK,还可以选择装一个JRE,这个JRE是被默认装到C:\Program Files\Java下的。sun提供两套JRE是有道理的,如果我们只是想运行Java程序,那么去官网下一个JRE就行了,而无需拿来一个JDK,如果是要开发Java程序那就需要一个JDK了."JDK里面的工具几乎都是用Java写的,所以JDK本身就是Java应用程序,因此要使用JDK附的工具来开发Java程序也必须要自行附一套JRE才行,这就是java_home\jre存在的原因,而位于Program File\jre的那套JRE就是拿来执行我们自己写的Java应用程序的。不过,两套中任何一套JRE都可以拿来执行我们所写的Java应用程序,可是JDK内附的开发工具在预设开发工具使用包装器(.exe)来启动的情况下,都拿自己支选用java_home\jre".(《Java深度历险》)

 

因此,现在可以明白设path和classpath的作用了:path是为JDK提供的那些工具设的,如java.exe,javac.exe,而classpath是为Java程序所用到的库文件所设的,于是path设成:java_home\bin;而classpath设为:java_home\jre\lib\rt.jar,如果我们开发的一个应用中用到了非j2se提供的库文件,则需将这些文件加到classpath中,比如说利用javamail开发一个邮件应用,就应该把mail.jar

等文件加到classpath中:java_home\jre\lib\ext\mail.jar;.

 

如果一台PC上装了几个JRE,那么就要注意了,有时很容易产生问题,很可能我们用来编译Java程序的javac.exe所相关的JRE与运行程序时所用的JRE不是一个版本, 这可能会产生版本冲突,这可以通过设定path变量来解决。

 

最后应用中的第三方文件应该加到java_home\jre\lib\ext下,就像刚才那样,与Java相关的安全设定档都放置java_home\jre\lib\security。最后扩展一点,与Java相关的很多工具的path设定原则都与上述差不多,比如说想安装一个Ant,应该在path 中这样设: 

F:\\Ant\apache-ant-1.6.5\bin;

看看bin下有什么就明白这样做是为了指定命令工具ant所在的目录。

 

 

 

 

 

 

======================================================================

 

 

 

 

 

 

 

 

 

 

写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已包含了JRE,因此对JAVA_HOME设置为JDK的路径时也能正常运行Java程序,不过JDK比较大包括了许多和运行无关的内容,因此运行普通的Java程序无须安装JDK。

 

    Eclipse中内嵌了Java编译器,并且和JDK中的javac完全相容,因此无须使用JDK也能直接编译Java程序。

 

    为什么Tomcat和Apusic用JRE就能启动,Weblogic用JDK才能启动呢?原因是Tomcat和Apusic 4都已包括了一个原始码编译器,而Weblogic没有包括这个编译器包。

 

    那么为什么需要编译器呢?因为在WEB应用中JSP文件是需要转换成Servlet,这个Servlet文件还需要编译成能在JRE上执行的class文件,因此必须提供有编译能力的JDK,将JAVA_HOME设置为JDK的路径就能了。

 

    那么新出现的Apusic5.0呢?这个版本为了使大家能灵活调整JVM的版本,因此不再提供自带的Java编译器,而是通过用户安装的JDK来完成JSP的编译工作,这个也就是为什么Apusic 5.0必须通过JDK启动的原因

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值