使用 Class.forName() 找不到 class

Can't find a class using Class.forName()

这是我的"test-addon"

我正在尝试加载我的 "main 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);
}

如图所示,class 存在,但仍然 returns:

第 21 行:jarClass = cls.loadClass("main.Addon");

问题:为什么会这样

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

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

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

一个简单的解决方法是:jarClass = Class.forName("main.Addon", true, this);