黑马程序员技术交流社区

标题: 一个刚学习时碰到的问题 [打印本页]

作者: 程小龙    时间: 2012-3-7 15:52
标题: 一个刚学习时碰到的问题
安装学习视频学习,当时安装jdk,配置环境变量path和classpath!视频里面当时先教怎么配置path,后面教如何配置classpath,否则无法运行!奇怪的地方出现了,我机子没有配置classpath变量,java程序在任何一个文件夹编译,都能执行。这是个什么情况呢?
作者: 泮和顺    时间: 2012-3-7 15:58
这么神奇啊 不相信呵呵
作者: 程小龙    时间: 2012-3-7 16:03
泮和顺 发表于 2012-3-7 15:58
这么神奇啊 不相信呵呵

其实我也不相信,不过网上有人也出现这个问题,不得不信,咱的确遇到这个问题了。
作者: Akm    时间: 2012-3-7 16:10
本帖最后由 Akm 于 2012-3-7 16:13 编辑

  环境变量path和classpath 总的来说 类似于 全局变量和 局部变量

  path是指操作系统提供的环境变量

  例如:D:/****/***/xxx.exe在path中设置好了路径,那么在命令行中,不管在那个路径下输入都能执行 在命令行输入一个命令然后它就执行了,很好玩的。

  关于classpath 想必 编java程序的时候都知道import的作用吧! 当要用的class,在某一个.jar下是,你需要在编译时引入,jvm自动去找classpath环境变量引入下面的jar包,这就是classpath环境变量的作用

作者: 黑马—王宁    时间: 2012-3-7 16:18
我还没有学习到这里,还是不明白,能再解释的清楚些吗?
作者: 黄或俊    时间: 2012-3-7 16:26
你仔细研究一下你电脑里面的环境变量path和classpath的值就会明白的
作者: 程小龙    时间: 2012-3-7 16:54
贴出path变量,大家帮我看看。C:\Program Files\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\jdk1.7.0\bin;d:\Program Files\Tencent\QQPCMgr\6.8.2325.201
作者: 秦超    时间: 2012-3-7 17:34
定义path时,把jdk的地址放在最前面比较好些,可以加快程序运行效率,因为运行java时,系统会查找path中的jdk位置,如果jdk位置定义在后面,就会先查找前面的地址,最后才找到jdk
作者: 未济64    时间: 2012-3-7 17:49
你在dos命令行下面输入:set classpath命令,看看是否是已设置了,还是提示没有classpath这个命令。。。应该来说不会出现这种情况的。
作者: 小白    时间: 2012-3-7 19:55
安装SDK一般不需要设置环境变量classpath的值,但是如果计算机安装过一些商业化的Java开发产品或者带有Java技术的一些产品,如PB,Oracle等,那么这些产品安装后,可能会修改classpath的值,那么当运行Java程序时,可能会加载这些产品所带的旧版本的类库,而导致程序要加载的类无法找到,是程序出现运行错误,这就需要重新编辑classpath的值。
作者: 程小龙    时间: 2012-3-7 20:46
提示 环境变量 classpath 没有定义
作者: 文胜平    时间: 2012-3-8 01:02
在编译的时候,虚拟机首先查找path里面的路径,如果path的路径对了就可以了 ,
classpath 是局部的,是在path 设置不正确或者没有设置的时候使用的 , 是一个备用的  配置环境
作者: 王杰    时间: 2012-3-8 12:17
真的?
那你试一试将编译好的一个class文件放在c盘。
你切换到d盘去运行一下试一试。。哈哈

你说的情况我明白,其实classpath的设定是为了对付可能我们存储的clas文件不在同一个路径的问题。
为什么你不设置也可以运行那是因为。如果你没有设置classpath,那么在你执行class文件的时候,jvm会在当前目录找一次。如果你设置了classpath,jvm会在你设置的路径去找class文件。
作者: 黄方    时间: 2012-3-8 12:30
本帖最后由 舞动的心弦 于 2012-3-8 12:39 编辑

谁说非要配置classpath?我的机子一直都没设置classpath呀!给你个底层的运行原理吧:
1.jdk的配置:
         属性------>高级设置----->环境变量--->新建--------->path——>Jdk安装目录的bin文件如:
         C:\Program Files\Java\jdk1.6.0\bin
         2.如何切换盘符:
         (1)如:我的程序在G盘的JAVACode文件
        cmd——> cd g: ——>g:——>dir就可以找到JAVACode文件
        (2)编译命令:javac   Hello.java       
            执行命令:java Hello
            (3)java源代码:(.java文件)程序员看的懂计算机看不懂【它是不能被执行的】——>所以必须通过java编译器
            就是javac.exe把它编译成java字节码文件(.class文件)【计算机找的就是字节码文件】通过[解释执行器] java.exe
            加载到java虚拟机,字节码(.class文件)就能在虚拟机中运行了
            (4)jre:java运行环境  ————>java工具:java编译器 javac.exe           java解释执行器:java.exe
                      建议LZ看看韩顺平老师的视频吧!呵呵,,,,,,
作者: 吴璞玉    时间: 2012-3-8 12:35
不设置classpath的话,在DOS界面运行class文件要求该文件在当前目录下,否则也是无法运行的,刚开始理解错了
作者: 程小龙    时间: 2012-3-8 13:20
多谢大家热情回帖,受教了!
作者: 文胜平    时间: 2012-3-8 23:13
classpath 是设置调用包的路径的,就是eclipse里面的 import  xxx;
因为直接输出 System.out.println("Hello World");这些语句时调用到java.lang包中的东西,
而system.这个类是存在于java.lang包中,没有调用到其他的类。所以可以直接输出。

纠结 - - 今天回家的时候还专门问了老师。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2