2016-08-16 9 views
2

У меня есть приложение, которое работает нормально, пока я не ввел следующие зависимости maven.Добавление maven dependency вызывает java.lang.ClassNotFoundException

<dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.3</version> 
    </dependency> 

    <dependency> 
     <groupId>net.sf.supercsv</groupId> 
     <artifactId>super-csv</artifactId> 
     <version>2.4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.janino</groupId> 
     <artifactId>commons-compiler-jdk</artifactId> 
     <version>3.0.0</version> 
    </dependency> 

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

Exception 1:

Exception in thread "2/streamJsonParser:StreamingJsonParser" java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation 
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165) 
at org.apache.log4j.Category.forcedLog(Category.java:391) 
at org.apache.log4j.Category.log(Category.java:856) 
at org.slf4j.impl.Log4jLoggerAdapter.error(Log4jLoggerAdapter.java:540) 
at com.datatorrent.stram.engine.StreamingContainer$2.run(StreamingContainer.java:1431) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.spi.ThrowableInformation 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 5 more 

Исключение 2:

Exception in thread "[email protected]" java.lang.NoClassDefFoundError: com/google/common/collect/LinkedListMultimap$3 
at com.google.common.collect.LinkedListMultimap.values(LinkedListMultimap.java:846) 
at org.apache.hadoop.hdfs.PeerCache.clear(PeerCache.java:271) 
at org.apache.hadoop.hdfs.PeerCache$1.run(PeerCache.java:128) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.LinkedListMultimap$3 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 

Исключение 3:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/helpers/NullEnumeration 
at org.apache.log4j.Category.getAllAppenders(Category.java:413) 
at org.apache.log4j.Category.closeNestedAppenders(Category.java:226) 
at org.apache.log4j.Hierarchy.shutdown(Hierarchy.java:467) 
at org.apache.log4j.LogManager.shutdown(LogManager.java:267) 
at com.datatorrent.stram.engine.StreamingContainer.main(StreamingContainer.java:332) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.helpers.NullEnumeration 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 5 morexception in thread "Thread-3" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ShutdownHookManager$2 
at org.apache.hadoop.util.ShutdownHookManager.getShutdownHooksInOrder(ShutdownHookManager.java:124) 
at org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:52) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.ShutdownHookManager$2 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 2 more 

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

ответ

0

Включить следующие зависимости в вашем POM

<!-- https://mvnrepository.com/artifact/log4j/apache-log4j-extras --> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>apache-log4j-extras</artifactId> 
    <version>1.1</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> 
<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>19.0</version> 
</dependency> 

Они пропали без вести из-за того, что вы получаете исключение.

Ниже приведен снимок экрана вкладки зависимостей редактора POM в STS. Последнее затмение должно также иметь его.

enter image description here

Вы также можете использовать следующую команду для проверки зависимостей.

mvn dependency:tree 
+0

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

+0

Можете ли вы помочь мне понять, добавили ли вы вышеперечисленные зависимости, какие-либо дублирующие зависимости, связанные с log4j или guava? – thevillageguy

+0

Банки заполнены именем 'artifactId-version', поэтому любые зависимости, которые вы включаете с тем же artifactId и версией, будут отображаться только один раз. Однако вы должны проверить, есть ли у вас уже другая версия log4j, если вы измените версию log4j-extra на версию своего собственного log4j. – 11thdimension

0

ли вы попробовать это:

mvn clean install -U 

-U спросить Maven, чтобы заставить обновление зависимостей.

+0

Я пробовал сейчас, но все тот же вопрос. – thevillageguy

+0

Я думаю, если это из-за дублирования классов, загружаемых не уверен, хотя на то, что исключить. – thevillageguy

0

Я принял ответ выше, поскольку пользователь объяснил мне способ идентификации добавляемых дублирующих зависимостей.

Это на самом деле проблема с дублирующимися зависимостями отложений из POM и среды времени выполнения.

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

  • Нет связанных вопросов^_^