为什么即使在移植外部JAR之后也会导致NoClassDefFoundError



我在使用Java中的Yahoo Finance API时遇到了问题(使用Eclipse)。当我编译我的代码时,当我删除代码完美编译的所有雅虎内容时,我得到了一个NoClassDefFoundError。我用来添加JAR的方法是转到属性->库->添加外部JARS,然后添加YahooFinanceAPI-3.14.0.jar。然后我去了构建路径并在那里检查了它。

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at yahoofinance.quotes.query1v7.QuotesRequest.<clinit>(QuotesRequest.java:28)
at yahoofinance.YahooFinance.getQuotes(YahooFinance.java:380)
at yahoofinance.YahooFinance.get(YahooFinance.java:98)
at yahoofinance.YahooFinance.get(YahooFinance.java:82)
at Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 5 more

对雅虎财经的依赖具有传递依赖关系,这些依赖关系未包含在您添加到构建路径的 jar 中,因此您看到的错误,这给您留下了两个选择:

  1. 逐个跟踪缺少的依赖项,找到所需的 jar 并将它们添加到构建路径中

  2. 使用某种依赖关系管理,例如mavengradle来为您解决这些依赖关系。

相关内容

最新更新