NoClassDefFoundError with Maven and a Java Wiki Library



我正在使用一个库来进行维基百科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>

[更新]

  1. 遵循命名约定;包名称:com.factfinder(全部小写)。修复代码、pom 和目录名称。
  2. 添加 maven-jar-插件的版本

请注意,我尝试使用您的pom - 它似乎对我有用...您确定在 maven 构建期间没有收到任何其他警告或错误吗?你能做一个干净的包装吗?

检查POM的第53行:

<classpathPrefix>lib</classpathPrefix>

应该是:

<classpathPrefix>lib/</classpathPrefix>

最新更新