import java.net.*;
public class ac {
public static void main(String[] args) {
try {
URL u = new URL("file:/d:/nnn/a/b/c");
ClassLoader loader = new URLClassLoader (new URL[]{u});
Class cla = loader.loadClass("ac"); //ac这个类是属于a.b.c包里的,我把上面URL的构造函数改成file:/d:/nnn,然后这里写a.b.c.ac报错说找不到类!
System.out.println("加载成功");
System.out.println(cla.getName());
URL u2 = new URL("file:/d:/nnn/a/b/c");
ClassLoader c = new URLClassLoader(new URL[]{u2});
Class ac = c.loadClass("ac");
System.out.println(ac == cla); //这两个类是不同的加载器加载的,这里为什么会输出TRUE?
System.out.println(c.getClass().getClassLoader()); //下面这三个,为什么输出全是NULL?
System.out.println(cla.getClass().getClassLoader());
System.out.println(ac.getPackage()); //ac这个类是有包的啊!为什么会是NULL? } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
书上没把我讲明白。。谢谢回答!
public class ac {
public static void main(String[] args) {
try {
URL u = new URL("file:/d:/nnn/a/b/c");
ClassLoader loader = new URLClassLoader (new URL[]{u});
Class cla = loader.loadClass("ac"); //ac这个类是属于a.b.c包里的,我把上面URL的构造函数改成file:/d:/nnn,然后这里写a.b.c.ac报错说找不到类!
System.out.println("加载成功");
System.out.println(cla.getName());
URL u2 = new URL("file:/d:/nnn/a/b/c");
ClassLoader c = new URLClassLoader(new URL[]{u2});
Class ac = c.loadClass("ac");
System.out.println(ac == cla); //这两个类是不同的加载器加载的,这里为什么会输出TRUE?
System.out.println(c.getClass().getClassLoader()); //下面这三个,为什么输出全是NULL?
System.out.println(cla.getClass().getClassLoader());
System.out.println(ac.getPackage()); //ac这个类是有包的啊!为什么会是NULL? } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
书上没把我讲明白。。谢谢回答!
解决方案 »
- 英雄会之在线笔试面试,等你来挑战(更新至2013/5/22)
- 急!!!在线等!!!java 关于Access数据库更新问题
- 为何双击jar文件不能运行用java -jar就可以打开
- Server窗口的时候更新LOGON窗口下的JComboBox jcomboServer列表,这段代码应该怎么修改,请高手指点!
- SOCKET短连接的问题
- 如何判断一个字符串的编码方式?
- 请问谁有corejava这本书的第一章的源代码?
- iteator 是什么意思;请指教其确切中文翻译
- 问一个message Bean的问题,up有分
- 哪位跟我讲讲标准的ERP系统包括哪几部分?
- 您好,想请教您一个关于成员变量异包异类调用的问题
- 遇到一个问题想不明白,希望能说明过程
我就把这个类的名字改了。
这不改不要紧 一改就报错了。根本连输出都没有了
java.lang.ClassNotFoundException: ac
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at acaaa.main(acaaa.java:7)
ClassLoader loader = new URLClassLoader (new URL[]{u});
Class cla = loader.loadClass("a.b.c.ac"); 记住,包名是作为类名的一部分的
还是报错
java.lang.ClassNotFoundException: a.b.c.ac
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at aca.main(aca.java:7)
你可以试试ac.getClassLoader()
这个改了没有
原来在工程里有一个叫ac的类
我把它删了以后用
URL u = new URL("file:/d:/nnn/a/b/c");
ClassLoader loader = new URLClassLoader (new URL[]{u});
Class cla = loader.loadClass("ac");
这种方式加载也报错了。
用你说的那种方式还是报错
你可以试试ac.getClassLoader()
=========================================================================
不好意思
这里写错了
应该是ac.getClass().getClassLoader()
那个要被加载的类有包的啊
package a.b.c;
public class ac{
public String username = "123456";
public String password = "11111";}
在d:\nnn\a\b\c目录下
我现在怀疑是我机子的问题。
今天早上有个问题。我在我机子上写例子 怎么运行都报错
上公司电脑上 就没错。
就是这个:
http://topic.csdn.net/u/20080108/22/5c356d8b-102d-4f21-acb5-f6f8e53c80ee.html