关于package classPath import

沁海棠 2017-04-23 06:57:13
.;f:\qq\;f:\pp\;这是环境变量的配置CLASSPATH
F:\pp\ww 目录下写了一段代码
package ww;
import java.util.Date;
public class World{
public static void main(String[] args){
System.out.println("World");
Date d = new Date();
System.out.println(d);
World w = new World();
System.out.println("fdsafdas");
}
}
打包会报错,java.lang.noClassDeFound,
个人理解ClassPath配置是就是源路径,类加载器在配置的目录下加载Class文件,那么我配置的f;\pp\那不是源路径么
那么我在建一个文件夹ww那不包么,ww下写的World,的package不是写 ww么;ClassPath不用配置java的lib就能加载?
用记事本写的,另一个目录f:\qq下建了一个hh文件夹
package hh;
import ww.World;
public class Hello{
public static void main(String[] args){
System.out.println("Hello");
World w = new World();
}
}
我想着既然,ClassPath是源路径,那么Hello是hh目录下的打包hh,类加载去加载World类,会去F:\pp\找看看有没有
自学刚开始用记事本写了个HelloWorld就用eclipse了,对于这些还不怎么理解,最近学完了基础想重新理解一边。求大神,回答。
...全文
123 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ceap2003 2017-04-24
引用 4 楼 qinhaotong 的回复:
里面的jar包。eclipse应该是有它自己的加载规则,用记事本,不配置还是能加载Date类。自己去找?好奇害死猫!
之前說了 java 加載類的工作,統一由 ClassLoader 實現,wiki 有簡單說明: https://zh.wikipedia.org/zh-cn/Java%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%99%A8 其中,引导类加载器 (bootstrap ClassLoader) 會加載 <JAVA_HOME>/jre/lib 中的 jar 包。rt.jar 是其中一個,java.util.Date 就在 rt.jar 中。所以不用配置也可使用。(jar 是一個zip file ,可用 7zip 等工其打開看看)
回复
沁海棠 2017-04-23
引用 3 楼 ceap2003的回复:
[quote=引用 2 楼 qinhaotong 的回复:] 类加载去源路径搜索,但并没有写lib包的路径,把javahome也删了,但是依然可以直接导入,只有path配置了bin,.代表当前路径,记得好像可以不配置,默认加载当前路径,lib为啥也可不配置,感觉有点专牛角尖了
不太明白你想問的是什麼?Java 類加載沒有特定的規則。如何加載類完全視乎 CLassLoader 如何實現。eclipse, ant 和 Applet 有它自己實現的ClassLoader 和 java.exe 和 javac.exe 這些工具程式不同。所以無須依賴 CLASSPATH 的設置。 另,lib为啥也可不配置,是否指不能加類 lib 內的 jar 嗎?[/quote] 里面的jar包。eclipse应该是有它自己的加载规则,用记事本,不配置还是能加载Date类。自己去找?好奇害死猫!
回复
ceap2003 2017-04-23
引用 2 楼 qinhaotong 的回复:
类加载去源路径搜索,但并没有写lib包的路径,把javahome也删了,但是依然可以直接导入,只有path配置了bin,.代表当前路径,记得好像可以不配置,默认加载当前路径,lib为啥也可不配置,感觉有点专牛角尖了
不太明白你想問的是什麼?Java 類加載沒有特定的規則。如何加載類完全視乎 CLassLoader 如何實現。eclipse, ant 和 Applet 有它自己實現的ClassLoader 和 java.exe 和 javac.exe 這些工具程式不同。所以無須依賴 CLASSPATH 的設置。 另,lib为啥也可不配置,是否指不能加類 lib 內的 jar 嗎?
回复
沁海棠 2017-04-23
引用 1 楼 ceap2003的回复:
執行 World class 出現 Class not found 嗎? 你理解沒有錯。只是執行時,需要加上package (包)的名稱。如
 java ww.World 
如果,執行
 java World 
會出現 class not found 的
类加载去源路径搜索,但并没有写lib包的路径,把javahome也删了,但是依然可以直接导入,只有path配置了bin,.代表当前路径,记得好像可以不配置,默认加载当前路径,lib为啥也可不配置,感觉有点专牛角尖了
回复
ceap2003 2017-04-23
執行 World class 出現 Class not found 嗎? 你理解沒有錯。只是執行時,需要加上package (包)的名稱。如
 java ww.World 
如果,執行
 java World 
會出現 class not found 的
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告