2015-02-03 4 views
1

Я пытаюсь использовать db2triples в первый раз, что является проектом java/maven.исключение основного класса при запуске db2triples в первый раз

Я получил информацию об этом от its github page.

До сих пор, я выполнил следующие шаги:

  1. cd /programs/db2triples-master
  2. vim pom.xml и добавил db2triples зависимость
  3. mvn compile
  4. mvn package
  5. mvn dependency:copy-dependencies
  6. java -cp target/dependency/*.jar:target/db2triples-1.0.3-SNAPSHOT.jar net.antidot.semantic.rdf.rdb2rdf.main.Db2triples

И я получаю эту ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2693) 
    at java.lang.Class.privateGetMethodRecursive(Class.java:3040) 
    at java.lang.Class.getMethod0(Class.java:3010) 
    at java.lang.Class.getMethod(Class.java:1776) 
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

После прибегая к помощи вокруг, это может быть ошибка пути к классам, но я не уверен. Что нужно сделать для запуска этого приложения?

ответ

2

Погрешности означает, что при запуске db2triples он не может найти необходимую зависимость.

Одним из способов решения этой проблемы является добавление необходимых зависимостей к пути к вашему пути. Является ли apache commons cli jar фактически сидящим в целевых/зависимых?

Еще один способ решить эту проблему - построить банку, в которой есть все зависимые вложения. Плагин сборки как дескриптор jar-with-dependencies. Добавьте это в свой раздел <build><plugins> в своем пом.

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.5.3</version> 
    <configuration> 
     <descriptorId>jar-with-dependencies</descriptorId> 
    </configuration> 
    </plugin> 

Чтобы построить его mvn assembly:assembly.

У вас должна быть еще одна банда, сидящая в мишени, названная чем-то вроде db2triples-<version>-jar-with-dependencies.jar. Затем для запуска приложения вам просто нужно запустить java -cp dbp2triples-<version>-jar-with-dependencies.jar net.antidot.semantic.rdf.rdb2rdf.main.Db2triples

2

Согласно связанному github страницы, вы должны получить необходимые зависимости

Needed dependency

OpenRdf Sesame > 2.6.x - http://www.openrdf.org/ 
Commons-cli > 1.2 - http://commons.apache.org/cli/ 
Commons-logging > 1.1.1 - http://commons.apache.org/logging/ 

Или, если вы используете Maven, добавьте db2triples как зависимость к вашему П

<dependency> 
    <groupId>net.antidot</groupId> 
    <artifactId>db2triples</artifactId> 
</dependency> 
+0

не сделал это? «шаг 2: db2triples dep», «шаг 3 и 4: компиляция и пакет с maven» – Kristian

+0

Нет, ваши шаги, описанные выше, пытаются построить свой проект. Вы должны добавить его в качестве зависимости от своего проекта, чтобы использовать его в своем проекте. После того, как вы построили его, чтобы его запустить, вам все равно нужно указать зависимости от вашего класса. –

+1

, если добавьте зависимость, которую вы имеете в виду, отредактируйте 'pom.xml' и добавьте зависимость db2triples, тогда да, я это сделал абсолютно (шаг 2). ' net.antidot db2triples 1.0.2 ', что мне не хватает? – Kristian

Смежные вопросы