芝麻 - 错误初始化存储库 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