【发布时间】: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文件,并且成功了!