java - 从 jar 运行时出错 - 反射 class.forname 异常

标签 java netbeans reflection jar

我正在用 java 做一个项目,一切都运行良好,直到我尝试从 jar 文件运行我的程序。我设法找到了问题所在,它是这样的:

我尝试实现基于插件的方法。我有一个conf 文件,我从其中读取要使用的类的路径,然后使用class.forname 动态加载它们。这是我的代码(如果有帮助的话):

        for (i=0; i<classPathsArray.size(); i++) {
            Class c = Class.forName(classPathsArray.get(i));  //error line
            Object class2Add = (LibraryWrapper)c.newInstance();

            wrappers.add((LibraryWrapper)class2Add);
        }

库路径类似于:“path.path.path.path.className”,无论我从 IDE 还是从 jar 运行我的项目,它们似乎都可以(当我说“看起来不错”时,我的意思是它们正是写入文件的内容)。

我指出了创建异常的确切行,这是我得到的异常的快照: enter image description here

我(再次)强调,从 IDE 执行我的项目时一切正常,问题是当我从 dist 文件夹中的 jar 运行它时。

有谁知道我为什么会遇到这个问题以及如何解决它?

<小时/>

PS:我的所有类(class)都在“Source Packages”文件夹中

最佳答案

由于类路径不完整而发生 NoClassDefFoundError。在运行 jar 文件之前,请确保所有必需的 jar 都位于类路径中。如果您要创建可执行 jar 文件,那么您可以在 list 文件中定义类路径,如下所示:

Class-Path: servlet.jar infobus.jar

希望这有帮助。

关于java - 从 jar 运行时出错 - 反射 class.forname 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23509495/

相关文章:

java - json 到 java 对象的通用解析

java - 如何将两个不同 Spout 的输出发送到同一个 Bolt?

java - JavaFX Scene Builder 在 Linux 支持上可用吗?

c# - 获取应用于此实例的 c# 属性?

c++ - 在运行时处理类型删除的数据 - 如何不重新发明轮子?

c - 需要有关添加 openssl 库的帮助

java.security.NoSuchProviderException : no such provider: SunMSCAPI

java - 根据传递给 jsp 的变量更改 div 背景

java - 如何将 `Class<T>` 与子类一起使用,其中 T 是父类

java - Jakarta/Java EE 兼容性如何工作?