我从这个项目https://github.com/timmolter/XChange下载了jar文件,我现在正试图在Eclipse中运行一个示例程序。
在运行时没有指示错误,但在尝试运行它时,我收到以下错误消息。
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.xeiam.xchange.ExchangeFactory.<init>(ExchangeFactory.java:41)
at com.xeiam.xchange.ExchangeFactory.<clinit>(ExchangeFactory.java:39)
at com.xeiam.xchange.rhbotha.bot.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
这是我的代码。
package com.xeiam.xchange.rhbotha.bot;
import com.xeiam.xchange.Exchange;
import com.xeiam.xchange.ExchangeFactory;
import com.xeiam.xchange.currency.Currencies;
import com.xeiam.xchange.dto.marketdata.Ticker;
import com.xeiam.xchange.mtgox.v1.MtGoxExchange;
import com.xeiam.xchange.service.marketdata.polling.PollingMarketDataService;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// Use the factory to get the version 1 MtGox exchange API using default settings
Exchange mtGoxExchange = ExchangeFactory.INSTANCE.createExchange(MtGoxExchange.class.getName());
// Interested in the public polling market data feed (no authentication)
PollingMarketDataService marketDataService = mtGoxExchange.getPollingMarketDataService();
// Get the latest ticker data showing BTC to USD
Ticker ticker = marketDataService.getTicker(Currencies.BTC, Currencies.USD);
System.out.println(ticker.toString());
// Get the latest ticker data showing BTC to EUR
ticker = marketDataService.getTicker(Currencies.BTC, Currencies.EUR);
System.out.println(ticker.toString());
// Get the latest ticker data showing BTC to GBP
ticker = marketDataService.getTicker(Currencies.BTC, Currencies.GBP);
System.out.println(ticker.toString());
}
}
根据我的阅读,它可能是类路径中的问题,但不知道该怎么做。任何帮助将不胜感激。
答案 0 :(得分:1)
你错过了这个jar(可能是其他人):org.slf4j.LoggerFactory
我的建议是使用Maven来管理您的依赖项(通过pom),但如果不是只下载这个jar并将其包含在其他jar中(即在类路径上)
答案 1 :(得分:1)
缺少slf4j.jar。从这里下载并将其包含在classpath中。 http://www.slf4j.org/download.html
在Eclipse中的转到Project Properties-&gt; Java Build Path-&gt; Libraries然后添加外部jar。
答案 2 :(得分:1)
您已下载了一个包含您在代码中使用的类的jar。您正在使用的类位于您已下载并在eclipse中放入类路径的jar中。在编译时,您的代码能够编译,因为您的代码所依赖的类已经编译并且可以在类路径中找到(在您添加的jar中),因此您不会遇到任何编译错误。
问题是您下载的jar取决于您在类路径中未提供的其他jar的其他类。当您尝试运行时,由于该类不存在,您将获得未找到类的异常。就像其他人说的那样我会建议使用maven,这样当你包含你需要的jar时,jar的所有依赖都会被拉入。您还可以将所有必需的jar放在类路径中,它可能会有点难以管理
答案 3 :(得分:0)
您的类路径中缺少SLF4J lib。下载slf4j jar并添加到类路径(在Eclipse中转到Project Properties-&gt; Java Build Path-&gt; Libraries,然后添加外部jar。