2016-08-16 13 views
2

以下のmaven依存関係が導入されるまで、正常に動作するアプリケーションがあります。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> 

次の依存関係を導入した後、瓶には、適切に構築されていない何のコンパイラの例外が、アプリケーションを実行するとき、それは次の例外を除いて失敗してきている。

例外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> 

に次の依存関係を含め、これらが欠落しており、そのため、あなたは例外を取得しています。

以下は、STSのPOMエディタの依存関係タブのスクリーンショットです。最新の日食もそれを持っている必要があります。

enter image description here

また、依存関係を確認するには、次のコマンドを使用することができます。

mvn dependency:tree 
+0

私はこれらの依存関係を前も今も追加しようとしましたが、それは同じ問題です。私は、依存関係がなくなってしまうのではなく、重複した依存関係が原因であると推測しています。 – thevillageguy

+0

私が追加した上記の依存関係がlog4jまたはguavaに関連する重複した依存関係を追加するかどうか理解できますか? – thevillageguy

+0

Jarは 'artifactId-version'という名前でパックされているので、同じartifactIdとバージョンに含まれる依存関係は一度だけインクルードされます。しかし、 'log4j-extra'のバージョンを自分のlog4jのバージョンに変更すると、既に別のバージョンのlog4jを持っているかどうかを確認する必要があります。 – 11thdimension

0

あなたはこれを試していました:

mvn clean install -U 

-Uは、依存関係の更新を強制するためにMavenをお願いします。

+0

私は今でも同じことを試みましたが、同じ問題です。 – thevillageguy

+0

重複しているクラスのために、除外すべきものについては確かにロードされていないと思います。 – thevillageguy

0

私はユーザーが重複した依存関係を特定する方法を説明してくれたので、私は上記の答えを受け入れました。

実際には、POMと実行時環境からのハーフープ依存関係が重複している問題です。

関連する問題