我正在用 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 运行我的项目,它们似乎都可以(当我说“看起来不错”时,我的意思是它们正是写入文件的内容)。
我指出了创建异常的确切行,这是我得到的异常的快照:
我(再次)强调,从 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/