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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欢欢 高级黑马   /  2014-3-29 20:32  /  1587 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 欢欢 于 2014-4-1 09:15 编辑

以前没有配过classpath,EditPlus和MyEclipse都用着好好的。
突然今天用EditPlus的时候,报“错误: 找不到或无法加载主类”,而MyEclipse还用着好好的。
打开系统属性,发现classpath配了:D:\Java_jdk\jdk1.7.0_45\jre\lib\rt.jar  这个文件。
把classpath删掉后,EditPlus恢复正常,MyEclipse也正常。
classpath到底是什么啊?为什么配置了它之后会报错误: 找不到或无法加载主类?
D:\Java_jdk\jdk1.7.0_45\jre\lib\rt.jar 又是什么文件?为什么系统会自动把classpath配到这个文件上面?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
你看过类加载器没有 看过了就知道了
回复 使用道具 举报
黄晓鑫 发表于 2014-3-29 20:37
你看过类加载器没有 看过了就知道了

哦哦,还没有看到那里呢,刚看泛型
回复 使用道具 举报
哥们,rt.jar是系统提供的所有的api都在那个里面。而classpath 是我们的字节码文件的根目录。你可以指定一个目录,比如c:\java,然后你把.java文件里面放在里面使用javac xx.java 然后使用java xx运行。其实我们配置classpath是这样配置的 路径是: .;c:\java;  .代表先在当前目录中查找,如果找不到再到c:\java目录中查找。如果找不到就报错了。也就是说你要想实现在任何一个目录下都可以使用java xx。就是你编译好的文件,你想在任意目录下都可以直接使用java直接运行的话。你就要配置classpath

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
http://blog.csdn.net/zhangpengju999/article/details/5282526  给你博客地址你看看就明白了
回复 使用道具 举报
java虚拟机在运行一个类的时候,会去classpath下配置的目录下去找
classpath配置  配置jdk下的两个jar包路径: jdk/lib/dt.jar;      jdk/lib/tools.jar
path:  jdk/jir/bin
回复 使用道具 举报
枫露 中级黑马 2014-3-30 17:20:07
7#
javac -classpath的使用:

javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-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的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马