Java Can';找不到使用class.forName()的类

Java Can';找不到使用class.forName()的类,java,classloader,classnotfoundexception,urlclassloader,Java,Classloader,Classnotfoundexception,Urlclassloader,这是我的“测试插件” 我正在尝试使用以下方式加载我的“主类”: Class类; 试一试{ ClassLoader cls=ClassLoader.getSystemClassLoader(); jarClass=cls.loadClass(“main.Addon”); }catch(classnotfounde异常){ 抛出新的InvalidPlugineException(“未找到加载项类”,e); } 如图所示,该类存在,但仍返回: 第21行:jarClass=cls.loadClas

这是我的“测试插件”

我正在尝试使用以下方式加载我的“主类”:

Class类;
试一试{
ClassLoader cls=ClassLoader.getSystemClassLoader();
jarClass=cls.loadClass(“main.Addon”);
}catch(classnotfounde异常){
抛出新的InvalidPlugineException(“未找到加载项类”,e);
}
如图所示,该类存在,但仍返回:

第21行:
jarClass=cls.loadClass(“main.Addon”)


问题:为什么会发生这种情况

包含
main.Addon的jar或目录不在类路径上


尝试
加载项
(无包说明符)。在Maven风格的项目中,
src/main
是根(默认)包。

问题在于我使用的是SystemClassLoader,而不是我自己的


一个简单的修复方法是:
jarClass=Class.forName(“main.Addon”,true,this)

因为在运行时类路径上没有称为该类的类?是
包中的
插件
类,还是默认包中的
类?src是源main是默认包插件是正常的class@AndyTurner“在您的运行时类路径上没有称为该类的类”是什么意思。如果具有该名称的类位于运行时(与编译时相反)类路径上,这将起作用。这不是一个Maven风格的项目,已经用“Addon”尝试过了。在这种情况下,很明显:
main/Addon.class
在运行时不在类路径中。
Class<?> jarClass;
try {
    ClassLoader cls = ClassLoader.getSystemClassLoader();
    jarClass = cls.loadClass("main.Addon");
} catch (ClassNotFoundException e) {
    throw new InvalidPluginException("\"Addon class\" was not found", e);
}