A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程小龙 中级黑马   /  2012-3-7 15:52  /  2536 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

安装学习视频学习,当时安装jdk,配置环境变量path和classpath!视频里面当时先教怎么配置path,后面教如何配置classpath,否则无法运行!奇怪的地方出现了,我机子没有配置classpath变量,java程序在任何一个文件夹编译,都能执行。这是个什么情况呢?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

16 个回复

倒序浏览
这么神奇啊 不相信呵呵
回复 使用道具 举报
泮和顺 发表于 2012-3-7 15:58
这么神奇啊 不相信呵呵

其实我也不相信,不过网上有人也出现这个问题,不得不信,咱的确遇到这个问题了。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 其实我也遇到过。

查看全部评分

回复 使用道具 举报
Akm 黑马帝 2012-3-7 16:10:30
板凳
本帖最后由 Akm 于 2012-3-7 16:13 编辑

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

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

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

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

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
我还没有学习到这里,还是不明白,能再解释的清楚些吗?
回复 使用道具 举报
你仔细研究一下你电脑里面的环境变量path和classpath的值就会明白的

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 确实。

查看全部评分

回复 使用道具 举报
贴出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

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我看到了。

查看全部评分

回复 使用道具 举报
定义path时,把jdk的地址放在最前面比较好些,可以加快程序运行效率,因为运行java时,系统会查找path中的jdk位置,如果jdk位置定义在后面,就会先查找前面的地址,最后才找到jdk
回复 使用道具 举报
你在dos命令行下面输入:set classpath命令,看看是否是已设置了,还是提示没有classpath这个命令。。。应该来说不会出现这种情况的。
回复 使用道具 举报
小白 黑马帝 2012-3-7 19:55:10
10#
安装SDK一般不需要设置环境变量classpath的值,但是如果计算机安装过一些商业化的Java开发产品或者带有Java技术的一些产品,如PB,Oracle等,那么这些产品安装后,可能会修改classpath的值,那么当运行Java程序时,可能会加载这些产品所带的旧版本的类库,而导致程序要加载的类无法找到,是程序出现运行错误,这就需要重新编辑classpath的值。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
提示 环境变量 classpath 没有定义
回复 使用道具 举报
在编译的时候,虚拟机首先查找path里面的路径,如果path的路径对了就可以了 ,
classpath 是局部的,是在path 设置不正确或者没有设置的时候使用的 , 是一个备用的  配置环境

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 看来这个问题,大家都精通了。.

查看全部评分

回复 使用道具 举报
王杰 黑马帝 2012-3-8 12:17:11
13#
真的?
那你试一试将编译好的一个class文件放在c盘。
你切换到d盘去运行一下试一试。。哈哈

你说的情况我明白,其实classpath的设定是为了对付可能我们存储的clas文件不在同一个路径的问题。
为什么你不设置也可以运行那是因为。如果你没有设置classpath,那么在你执行class文件的时候,jvm会在当前目录找一次。如果你设置了classpath,jvm会在你设置的路径去找class文件。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 舞动的心弦 于 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看看韩顺平老师的视频吧!呵呵,,,,,,

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
不设置classpath的话,在DOS界面运行class文件要求该文件在当前目录下,否则也是无法运行的,刚开始理解错了
回复 使用道具 举报
多谢大家热情回帖,受教了!
回复 使用道具 举报
classpath 是设置调用包的路径的,就是eclipse里面的 import  xxx;
因为直接输出 System.out.println("Hello World");这些语句时调用到java.lang包中的东西,
而system.这个类是存在于java.lang包中,没有调用到其他的类。所以可以直接输出。

纠结 - - 今天回家的时候还专门问了老师。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马