java加载指定的类_java – 从文件夹加载类而不指定包

我有一个应用程序,允许使用抽象类,人们编写自己的实现.我从目录中将这些实现加载为.class-files.目前,我有这个解决方案:

File classDir = new File("/users/myproject/classes/");

URL[] url = { classDir.toURI().toURL() };

URLClassLoader urlLoader = new URLClassLoader(url);

String filename;

for (File file : classDir.listFiles()) {

filename = string.getFilenameWithoutExtension(file);

if (filename.equals(".") || filename.equals("..") || filename.startsWith("."))

continue;

AbstractClass instance = (AbstractClass)urlLoader

.loadClass("org.mypackage." + filename)

.getConstructor(ConfigUtil.class,DatabaseUtil.class,StringUtil.class)

.newInstance(config,database,string));

instance.doSomething();

}

如您所见 – 我需要指定类所在的包,以便正确加载它们.省略了包裹,我得到了一个

java.lang.NoClassDefFoundError:

MyClass (wrong name: org/mypackage/MyClass)

现在,从建筑POV来看,我认为设计其他人的类在加载时必须编译为MY包,这是非常糟糕的设计.

所以我问你:有没有办法从文件系统加载类而不必指定它们所在的包?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值