2015-01-12 3 views
0

Я пытаюсь с примером Jackrabbit FirstHops, приведенным на сайте Apache, но при попытке запуска я становлюсь ниже ошибки.Jackrabbit FirstHop example java.lang.NoClassDefFoundError

S:\mvnapp\FirstHop2>java -cp target\FirstHop2-1.0-SNAPSHOT.jar org.shobhan.jr.Fi 
rstHopSB 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jcr/Credentials 

    Caused by: java.lang.ClassNotFoundException: javax.jcr.Credentials 
      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) 
      at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    Could not find the main class: org.shobhan.jr.FirstHopSB. Program will exit. 

Ниже файл pom.xml, я добавил зависимости, как это предусмотрено на апач сайта.

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.shobhan.jr</groupId> 
    <artifactId>FirstHop2</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>FirstHop2</name> 
    <url>http://maven.apache.org</url> 

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

    <dependencies> 
    <!-- The JCR API --> 
     <dependency> 
      <groupId>javax.jcr</groupId> 
      <artifactId>jcr</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <!-- Jackrabbit content repository --> 
     <dependency> 
      <groupId>org.apache.jackrabbit</groupId> 
      <artifactId>jackrabbit-core</artifactId> 
      <version>2.9.0</version> 
     </dependency> 
     <!-- Use Log4J for logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.7.5</version> 
     </dependency> 
    </dependencies> 
</project> 

My env. имеет значения ниже.

CLASSPATH = C: \ Program Files \ Java \ jdk1.6.0_17 \ Bin; S: \ JR \ Jackrabbit-автономный-2.8.0.jar JAVA_HOME = C: \ Program Files \ Java \ jdk1.6.0_17

M2_HOME = S: \ maven \ apache-maven-3.2.5 PATH =% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; S: \ maven \ apache-maven-3.2.5 \ bin; C: \ Program Files \ Java \ jdk1.6.0_17 \ bin

ответ

0

Эта ошибка «NoClassDefFound» возникает, когда библиотека присутствует во время компиляции, но то не в пути к среде выполнения. Это почти всегда означает, что в классе времени выполнения отсутствует JAR. Вам нужно включить jcr jar в свой путь к классам, если вы его жестко кодируете.

Лучше всего использовать maven exec: java plugin. Обновление: Here is a gist with a working pom.xml

Попробуйте добавить это в свой pom.xml после «depdendencies».

<build><plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>exec</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <executable>java</executable> 
     <includeProjectDependencies>true</includeProjectDependencies> 
     <includePluginDependencies>false</includePluginDependencies> 
     <classpathScope>compile</classpathScope> 
     <mainClass>com.whatever.MyMainClassy</mainClass> 
    </configuration> 
    </plugin> 
    </plugins></build> 

вы можете запустить с помощью

mvn exec:java 

и он будет использовать один и тот же путь к классам, как во время компиляции.

тестирование локально, результат должен выглядеть следующим образом:

mvn exec:java 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building FirstHop2 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ FirstHop2 >>> 
[INFO] 
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ FirstHop2 <<< 
[INFO] 
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ FirstHop2 --- 
Logged in as anonymous to a Jackrabbit repository. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5.420s 
[INFO] Finished at: Mon Jan 12 15:27:03 EST 2015 
[INFO] Final Memory: 17M/231M 
[INFO] ------------------------------------------------------------------------ 
+0

добавил этот код в pom.xml, изменил MainClass тег с моим классом, но все та же ошибка :( – NotesArt

+0

бегут код с «МВНОМ Exec: Java» –

+0

да, в конце концов, это просто говорит .. [INFO] СТРОИТЕЛЬНЫЙ УСПЕХ [INFO] --------------------------------------- [INFO] Общее время: 2.020 с [INFO] Закончено на: 2015-01-13T01: 37: 02 + 05: 30 [INFO] Конечная память: 3M/6M – NotesArt

0

с помощью приложения SE этот вопрос разрешится в моем случае. enter image description here