首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URLClassLoader不工作

URLClassLoader不工作
EN

Stack Overflow用户
提问于 2011-03-23 08:59:30
回答 1查看 2K关注 0票数 1

我想在名为BadgeDaoImpl的目录F:/BadgeDaoImpl/bin/com/p徽/dao/impl/中加载一个文件。我正在编写和测试以下代码。

如果更改目录或类名,则会引发异常。对于下面的代码(我认为它应该能工作),它不会抛出一个classNotFoundException,而是停止并将控件带到EventTable的finally块。

你能告诉我哪里弄错了吗?

代码语言:javascript
复制
URL[] urls = {new URL("file:/F:/badge-dao/bin/com/badge/dao/impl/")};

ClassLoader parentClassLoader = project.getClass().getClassLoader();

URLClassLoader classLoader = new URLClassLoader(urls, parentClassLoader);

selectedClass = classLoader.loadClass("BadgeDaoImpl");
EN

回答 1

Stack Overflow用户

发布于 2011-03-23 09:24:09

包名是完整类名的一部分,而不是类路径项,因此需要以下内容:

代码语言:javascript
复制
URL[] urls = {new URL("file:/F:/badge-dao/bin")}; 
...
selectedClass = classLoader.loadClass("com.badge.dao.impl.BadgeDaoImpl"); 

在您的原始代码中,类加载器可以在BadgeDaoImpl.class中找到一个名为file:/F:/badge-dao/bin/com/badge/dao/impl/的文件,但是它的完整类名(com.badge.dao.impl.BadgeDaoImpl)与请求的文件(BadgeDaoImpl)不匹配,因此类加载器抛出一个NoClassDefFoundError。因为您只捕获ClassNotFoundException,所以它看起来就像控件悄悄地传递给finally块。当您更改文件夹或类名以便找不到.class文件时,就会按预期抛出ClassNotFoundException

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5402816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档