NoClassDefFoundError。为什么???我该如何解决?

雅科夫·布尔采夫(Yakov Burtsev)

我写了我的类加载器:

package ru.sberbank.school.homework8;

import ru.sberbank.school.homework8.plugin.Plugin;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class PluginManager extends ClassLoader {
private final String pluginRootDirectory;

public PluginManager(String pluginRootDirectory) {
    this.pluginRootDirectory = pluginRootDirectory;
}

public Plugin load(String pluginName, String pluginClassName) {
    String name = pluginName + "." + pluginClassName;
    try {
        Class clazz;
        try {
            clazz = super.findSystemClass(name);
        } catch (ClassNotFoundException e) {
            String fileName = pluginRootDirectory + "\\" + pluginName + "\\" + pluginClassName + ".class";
            try (FileInputStream fin = new FileInputStream(fileName)) {
                byte[] buffer = new byte[(int) (new File(fileName).length())];
                fin.read(buffer);
                clazz = defineClass(name, buffer, 0, buffer.length);
            }
        }
        return (Plugin)clazz.newInstance();

    } catch (IOException | InstantiationException | IllegalAccessException ignored) {
        return null;
    }
}

}

当我运行它时:

package ru.sberbank.school.homework8;

import ru.sberbank.school.homework8.plugin.Plugin;

public class PluginManagerTest {
    public static void main(String[] args) {
        String pluginRootDirectory = "D:\\sbt\\target\\classes\\ru\\sberbank\\school\\homework8";
        PluginManager pluginManager = new PluginManager(pluginRootDirectory);
        Plugin plugin = pluginManager.load("plugin", "PluginImpl");
        if (plugin != null) {
            plugin.doUseful();
        }
    }
}

线程“主要” java.lang.NoClassDefFoundError中的异常:java.lang.ClassLoader.defineClass1(本机方法)上的plugin / PluginImpl(错误名称:ru / sberbank / school / homework8 / plugin / PluginImpl)

我收到NoClassDefFoundError。为什么???我该如何解决???

请帮帮我!

package ru.sberbank.school.homework8.plugin;

public class PluginImpl implements Plugin {
    @Override
    public void doUseful() {
        System.out.println("My plugin!");
    }
}
尼古拉斯·菲洛托(Nicolas Filotto)

因为没有提供正确的类的FQN,所以会收到此错误,确实是在您的load方法中,您尝试找到pluginName + "." + pluginClassName与之对应的类plugin.PluginImpl但是您的类的包名称PluginImpl实际上ru.sberbank.school.homework8.plugin是真正的FQN您的班级是ru.sberbank.school.homework8.plugin.PluginImpl

要解决此问题,您需要替换:

Plugin plugin = pluginManager.load("plugin", "PluginImpl");

和:

Plugin plugin = pluginManager.load("ru.sberbank.school.homework8.plugin", "PluginImpl");

或者,您可以修改方法load以添加前缀,前提是您始终将始终从同一根包中检索插件:

public Plugin load(String pluginName, String pluginClassName) {
    String name = "ru.sberbank.school.homework8." + pluginName + "." + pluginClassName;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么9 + 1 = *,我该如何解决?

来自分类Dev

为什么我不能下载swiglpk,该如何解决?

来自分类Dev

什么是NoSuchBeanDefinitionException,我该如何解决?

来自分类Dev

为什么我的Linux版本名称读取的是Linaro而不是Xubuntu,我该如何解决?

来自分类Dev

为什么我的拆分视图具有这种行为,我该如何解决?

来自分类Dev

为什么我的Spring Security login.jsp会戳CSS,我该如何解决?

来自分类Dev

为什么我的DataGridView拒绝显示底部数据,我该如何解决?

来自分类Dev

为什么Typescript将我的keyof类型强制为从不类型,我该如何解决?

来自分类Dev

为什么握手后我的插座关闭了,我该如何解决?

来自分类Dev

为什么我的Linux版本名称读取的是Linaro而不是Xubuntu,我该如何解决?

来自分类Dev

为什么我的Firefox菜单箭头被放大了?我该如何解决?

来自分类Dev

为什么我的32位OpenGL库指向mesa而不是nvidia,我该如何解决?

来自分类Dev

为什么我的DataGridView拒绝显示底部数据,我该如何解决?

来自分类Dev

为什么我的Makefile无法编译,我该如何解决?

来自分类Dev

为什么我得到了错误的输出,我该如何解决这个问题?

来自分类Dev

为什么我的表单会在 ajax 发布后发布?我该如何解决?

来自分类Dev

为什么 Bootstrap 会破坏我的正常 css 布局,我该如何解决?

来自分类Dev

为什么在Python 3.3中打印速度如此之慢,我该如何解决?

来自分类Dev

为什么ghci可以看到未导出的类型和构造函数?我该如何解决?

来自分类Dev

为什么会出现“应用程序不带参数”的提示,我该如何解决?

来自分类Dev

Vim为什么在此重新映射的键上延迟?我该如何解决?

来自分类Dev

为什么JavaCC无法在我的Mac上运行,该如何解决?

来自分类Dev

为什么这种相互递归的数据定义不完整,我该如何解决?

来自分类Dev

为什么此代码有“内联文件中的EOF”错误,我该如何解决?

来自分类Dev

为什么在Python 3.3中打印速度如此之慢,我该如何解决?

来自分类Dev

为什么UNIX shell会这样,我该如何解决?

来自分类Dev

为什么我在初始化字母时遇到错误,该如何解决?

来自分类Dev

Vim为什么在此重新映射的密钥上延迟?以及我该如何解决?

来自分类Dev

为什么vi明显损坏(viminfo错误E576),我该如何解决?

Related 相关文章

  1. 1

    为什么9 + 1 = *,我该如何解决?

  2. 2

    为什么我不能下载swiglpk,该如何解决?

  3. 3

    什么是NoSuchBeanDefinitionException,我该如何解决?

  4. 4

    为什么我的Linux版本名称读取的是Linaro而不是Xubuntu,我该如何解决?

  5. 5

    为什么我的拆分视图具有这种行为,我该如何解决?

  6. 6

    为什么我的Spring Security login.jsp会戳CSS,我该如何解决?

  7. 7

    为什么我的DataGridView拒绝显示底部数据,我该如何解决?

  8. 8

    为什么Typescript将我的keyof类型强制为从不类型,我该如何解决?

  9. 9

    为什么握手后我的插座关闭了,我该如何解决?

  10. 10

    为什么我的Linux版本名称读取的是Linaro而不是Xubuntu,我该如何解决?

  11. 11

    为什么我的Firefox菜单箭头被放大了?我该如何解决?

  12. 12

    为什么我的32位OpenGL库指向mesa而不是nvidia,我该如何解决?

  13. 13

    为什么我的DataGridView拒绝显示底部数据,我该如何解决?

  14. 14

    为什么我的Makefile无法编译,我该如何解决?

  15. 15

    为什么我得到了错误的输出,我该如何解决这个问题?

  16. 16

    为什么我的表单会在 ajax 发布后发布?我该如何解决?

  17. 17

    为什么 Bootstrap 会破坏我的正常 css 布局,我该如何解决?

  18. 18

    为什么在Python 3.3中打印速度如此之慢,我该如何解决?

  19. 19

    为什么ghci可以看到未导出的类型和构造函数?我该如何解决?

  20. 20

    为什么会出现“应用程序不带参数”的提示,我该如何解决?

  21. 21

    Vim为什么在此重新映射的键上延迟?我该如何解决?

  22. 22

    为什么JavaCC无法在我的Mac上运行,该如何解决?

  23. 23

    为什么这种相互递归的数据定义不完整,我该如何解决?

  24. 24

    为什么此代码有“内联文件中的EOF”错误,我该如何解决?

  25. 25

    为什么在Python 3.3中打印速度如此之慢,我该如何解决?

  26. 26

    为什么UNIX shell会这样,我该如何解决?

  27. 27

    为什么我在初始化字母时遇到错误,该如何解决?

  28. 28

    Vim为什么在此重新映射的密钥上延迟?以及我该如何解决?

  29. 29

    为什么vi明显损坏(viminfo错误E576),我该如何解决?

热门标签

归档