芝麻 - 错误初始化存储库 AbstractParserQuery 未找到
Sesame - error initializing repository AbstractParserQuery not found
我需要实现一个简单的 java 应用程序来在 Seasame 上执行一些查询。我想一开始尝试一些简单的东西,但我无法初始化存储库。我按照官方指南进行操作,我的程序如下所示:
public class HelloSesame {
public static void main(String[] args) {
File dataDir = new File("../../resources/test.ttl");
Repository rep = new SailRepository(new NativeStore(dataDir));
rep.initialize();
RepositoryConnection conn = rep.getConnection();
//...omitted code
}
}
和我的pom.xml
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-runtime</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version> </dependency>
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-model</artifactId>
<version>4.1.0</version>
</dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-repository-sail</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-queryparser-sparql</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-rio-api</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-query</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
</project>`
每次我尝试 运行 这个应用程序时,我都会收到错误消息:
16:02:06.436 [main] DEBUG o.openrdf.sail.nativerdf.NativeStore -
Initializing NativeStore... 16:02:06.461 [main] DEBUG
o.openrdf.sail.nativerdf.NativeStore - Data dir is
../../resources/test.ttl 16:02:06.540 [main] DEBUG
o.openrdf.sail.nativerdf.NativeStore - NativeStore initialized
Exception in thread "main" java.lang.NoClassDefFoundError:
org/openrdf/query/impl/AbstractParserQuery at
java.lang.ClassLoader.defineClass1(Native Method) ...
at main.jridrer.functiontest.HelloSesame.main(HelloSesame.java:36) Caused by: java.lang.ClassNotFoundException:
org.openrdf.query.impl.AbstractParserQuery at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 15 more
错误是在 rep.getConnection() 方法上引发的。
我试图在 google 上搜索,但什么也没有……我试图在 org.openrdf.query.impl 包中搜索 class,但是这个 class 不存在……
我试图用 MemoryStore 代替 NativeStore 但我得到了同样的错误。有人知道我接下来可以尝试什么吗?
您混用了两个不同版本的 Sesame,这很可能会导致问题。对于您对 sesame-runtime
的依赖,您有 4.0.1,对于其他库,您有 4.1.0。在任何情况下,如果您正在导入特定的芝麻库(例如模型、sail-nativerdf 等),您实际上不需要芝麻运行时依赖项(这是一个 'catch-all' 依赖项)。
您可能想考虑使用 Sesame 的物料清单 (BOM) - 这使得处理事情变得更容易一些,因为您只在一个地方定义了 Sesame 的版本。有关此的更多详细信息,请参阅 documentation。
我需要实现一个简单的 java 应用程序来在 Seasame 上执行一些查询。我想一开始尝试一些简单的东西,但我无法初始化存储库。我按照官方指南进行操作,我的程序如下所示:
public class HelloSesame {
public static void main(String[] args) {
File dataDir = new File("../../resources/test.ttl");
Repository rep = new SailRepository(new NativeStore(dataDir));
rep.initialize();
RepositoryConnection conn = rep.getConnection();
//...omitted code
}
}
和我的pom.xml
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-runtime</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version> </dependency>
<dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-model</artifactId>
<version>4.1.0</version>
</dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-repository-sail</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-queryparser-sparql</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-rio-api</artifactId>
<version>4.1.0</version> </dependency> <dependency>
<groupId>org.openrdf.sesame</groupId>
<artifactId>sesame-query</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
</project>`
每次我尝试 运行 这个应用程序时,我都会收到错误消息:
16:02:06.436 [main] DEBUG o.openrdf.sail.nativerdf.NativeStore - Initializing NativeStore... 16:02:06.461 [main] DEBUG o.openrdf.sail.nativerdf.NativeStore - Data dir is ../../resources/test.ttl 16:02:06.540 [main] DEBUG o.openrdf.sail.nativerdf.NativeStore - NativeStore initialized Exception in thread "main" java.lang.NoClassDefFoundError: org/openrdf/query/impl/AbstractParserQuery at java.lang.ClassLoader.defineClass1(Native Method) ... at main.jridrer.functiontest.HelloSesame.main(HelloSesame.java:36) Caused by: java.lang.ClassNotFoundException: org.openrdf.query.impl.AbstractParserQuery at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 15 more
错误是在 rep.getConnection() 方法上引发的。 我试图在 google 上搜索,但什么也没有……我试图在 org.openrdf.query.impl 包中搜索 class,但是这个 class 不存在…… 我试图用 MemoryStore 代替 NativeStore 但我得到了同样的错误。有人知道我接下来可以尝试什么吗?
您混用了两个不同版本的 Sesame,这很可能会导致问题。对于您对 sesame-runtime
的依赖,您有 4.0.1,对于其他库,您有 4.1.0。在任何情况下,如果您正在导入特定的芝麻库(例如模型、sail-nativerdf 等),您实际上不需要芝麻运行时依赖项(这是一个 'catch-all' 依赖项)。
您可能想考虑使用 Sesame 的物料清单 (BOM) - 这使得处理事情变得更容易一些,因为您只在一个地方定义了 Sesame 的版本。有关此的更多详细信息,请参阅 documentation。