为什么即使导入外部JAR也会引起NoClassDefFoundError

时间:2019-02-01 19:30:58

标签: java api

我在使用Java的Yahoo Finance API(使用Eclipse)时遇到问题。编译代码时,我得到一个NoClassDefFoundError,当我删除所有yahoo内容时,代码可以完美地编译。我用来添加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

1 个答案:

答案 0 :(得分:0)

对Yahoo Finance的依赖性具有传递性依赖性,这些依赖性不包含在您添加到构建路径的jar中,因此会看到错误,这给您两个选择:

  1. 一个接一个地跟踪丢失的依赖项,找到所需的jar并将其添加到您的构建路径中

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