2017-02-10 3 views
0

Я пытаюсь запустить первый пример, который поставляется с официальной документацией Jena.Простой пример Йены не работает

Здесь ошибка я получаю, когда я запустить команду "ява -jar цель/мой-приложение-1.0-SNAPSHOT-банку-с-dependencies.jar":

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.mycompany.app.RdfWriter.main(RdfWriter.java:13) 
Caused by: java.lang.NullPointerException 
    at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33) 
    at org.apache.jena.tdb.TDB.init(TDB.java:248) 
    at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) 
    at org.apache.jena.system.JenaSystem.lambda$init$2(JenaSystem.java:119) 
    at java.util.ArrayList.forEach(ArrayList.java:1249) 
    at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:194) 
    at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:171) 
    at org.apache.jena.system.JenaSystem.init(JenaSystem.java:117) 
    at org.apache.jena.rdf.model.ModelFactory.<clinit>(ModelFactory.java:49) 
    ... 1 more 

Вот мой ПОМ файл:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>my-app</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.jena</groupId> 
     <artifactId>apache-jena-libs</artifactId> 
     <version>3.1.1</version> 
     <type>pom</type> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.7</version> 
    </dependency> 
    </dependencies> 


    <build> 
     <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
      <archive> 
       <manifest> 
       <mainClass>com.mycompany.app.RdfWriter</mainClass> 
       </manifest> 
      </archive> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 

</project> 

А вот это единственный файл, который я до сих пор:

package com.mycompany.app; 

import org.apache.jena.rdf.model.*; 
import org.apache.jena.vocabulary.*; 

public class RdfWriter { 

    static String personURI = "http://somewhere/JohnSmith"; 
    static String fullName  = "John Smith"; 

    public static void main(String[] args) { 
     // create an empty model 
     Model model = ModelFactory.createDefaultModel(); 
     // create the resource 
     Resource johnSmith = model.createResource(personURI); 
     // add the property 
     johnSmith.addProperty(VCARD.FN, fullName); 
     System.out.println("this is rdf writer"); 
    } 

} 

Я только хочу, чтобы начать работу, так что если есть ва y, чтобы исправить положение или даже не использовать maven, если это проще, пожалуйста, дайте мне знать.

Я добавил новую зависимость к зависимостям в моем файле п после Тахира отметил, что в ответе, как это:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.6.2</version> 
</dependency> 

А теперь я получаю эту ошибку:

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.mycompany.app.RdfWriter.main(RdfWriter.java:14) 
Caused by: java.lang.NullPointerException 
    at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33) 
    at org.apache.jena.tdb.TDB.init(TDB.java:248) 
    at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) 
    at org.apache.jena.system.JenaSystem.lambda$init$2(JenaSystem.java:119) 
    at java.util.ArrayList.forEach(ArrayList.java:1249) 
    at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:194) 
    at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:171) 
    at org.apache.jena.system.JenaSystem.init(JenaSystem.java:117) 
    at org.apache.jena.rdf.model.ModelFactory.<clinit>(ModelFactory.java:49) 
    ... 1 more 

Благодарность

+0

На вопрос и ответил на список пользователей Jena: https://lists.apache.org/thread.html/[email protected]%3Cusers.jena.apache.org%3E – AndyS

+0

@AndyS, я добавил ссылку на затмение опции , ответ, о котором вы говорите, говорит следующее: я не знаю, как их объединить с плагином сборки. Надеюсь, кто-то знает здесь. –

ответ

0

Вам необходимо добавить следующие файлы jar в свой classpath:
slf4j-simple-1.6.1.jar

Просто добавьте эту зависимость и убедитесь, что она решит ваш problrm или нет?

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> 
<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-simple</artifactId> 
<version>1.6.1</version> 

+0

Я добавил его как зависимость от maven, и теперь я получаю новую ошибку. –

+0

Обновите свой вопрос: добавив требуемую зависимость, а также обновите свой вопрос с помощью новой ошибки @KarimMtl –

+0

Я сделал это, прежде чем добавлять предыдущий комментарий для вас. –

0

инструкции, найденные здесь: http://www.iandickinson.me.uk/articles/jena-eclipse-helloworld/ работал для меня.

Я все еще думаю, что это не должно быть сложно сделать для этого действительным пом. Если никто не предоставляет pom, который позволяет это запускать без ошибок, Я приму свой ответ.

Благодаря

0

Когда вы перепакованный банк с сборочным плагиным, то ServiceLoader файлы получили искажены. ServiceLoader - стандартная Java-функция, которую Jena использует для инициализации в баночках.

Вы должны объединить все файлы, называемые

META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle 

из банок (есть несколько из этих файлов, различное содержание).

Если вы действительно должны построить объединенную банку, а не использовать «mvn exec: exec», используйте плагин с оттенком <transformer implementation= "org.apache.maven.plugins.shade.resource.ServicesResourceTransformer/>.

+0

Я попробую это и дам вам знать –