我正在使用一个库来进行维基百科API调用,称为Java Wiki Bot Framework。我也使用 Maven 进行构建,并且我已经将框架添加到 pom 中.xml就像 github 页面所说的那样。但是,当我尝试实例化库中的任何类时,它会给我此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/jwbf/core/actions/HttpActionClient
at com.FactFinder.WikiParser.makeBot(WikiParser.java:21)
at com.FactFinder.WikiParser.<init>(WikiParser.java:16)
at com.FactFinder.App.main(App.java:15)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.jwbf.core.actions.HttpActionClient
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more
我的绒球.xml
显然,这是一个错误,当您的jar找不到类时会弹出,但是我已经检查了类路径,看起来不错。jar 包含在正确的文件夹中,我已经验证它包含我尝试使用的类。我考虑过联系图书馆作者,但我认为这可能比他的问题更像是我的问题。
为什么使用 Snapshot 版本 4.0.0-SNAPSHOT?我强烈建议使用最终版本来避免出现问题,其中 3.1.0 似乎是最新和最受欢迎的版本:
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>jwbf</artifactId>
<version>3.1.0</version>
</dependency>
[更新]
- 遵循命名约定;包名称:
com.factfinder
(全部小写)。修复代码、pom 和目录名称。 - 添加 maven-jar-插件的版本
请注意,我尝试使用您的pom - 它似乎对我有用...您确定在 maven 构建期间没有收到任何其他警告或错误吗?你能做一个干净的包装吗?
检查POM的第53行:
<classpathPrefix>lib</classpathPrefix>
应该是:
<classpathPrefix>lib/</classpathPrefix>