【问题标题】:NoClassDefFoundError for Jar libraryJar 库的 NoClassDefFoundError
【发布时间】:2013-02-24 14:32:32
【问题描述】:

我正在使用 Sesame 访问示例 RDF 存储库,

String sesameServer = "http://asimov.ludat.lth.se/openrdf-sesame/";
String repositoryID = "KnowRob";
// Cannot create HTTPRepository
Repository myRepository = new HTTPRepository(sesameServer,repositoryID);
myRepository.initialize();
RepositoryConnection con = myRepository.getConnection();

但是,我在尝试运行上面的代码时收到 NoClassDefFoundError。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
    at org.openrdf.repository.http.HTTPRepository.<init>(HTTPRepository.java:54)
    at org.openrdf.repository.http.HTTPRepository.<init>(HTTPRepository.java:59)
    at RDF.Start.main(Start.java:30)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.Credentials
    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

【问题讨论】:

  • 看起来你的类路径中也需要Apache HttpClient 库。注意 3.x 和 4.x 版本差别很大,所以一定要为这个项目找到合适的版本,这必须在 README 或 Sesame 库的其他地方说明。
  • 我会考虑使用 Maven 或等价物来处理您的传递依赖管理;这样的问题不值得手动处理。
  • @LuiggiMendoza 谢谢!不完全是问题,但我从 Sesame 网站下载了 openrdf-sesame-2.6.10-sdk 而不是 openrdf-sesame-2.6.10-onejar 文件,并且成功了!

标签: java rdf sesame


【解决方案1】:

在用户定义的类和定义的类路径外部jar中找不到使用的类时发生NoClassDefFoundError异常。

所以download and configure classpath commons-httpclient-3.0.1.jar 库在你的类路径中。

【讨论】:

  • 你的第一句话语法很尴尬,我不完全确定你想说什么,否则我会编辑它。你能edit澄清一下吗?
猜你喜欢
  • 2012-01-08
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 2014-01-30
  • 1970-01-01
相关资源
最近更新 更多