java.lang.NoClassDefFoundError: org/apache/log4j/Priorität

Bin ich nach einer custom logging-tool zum implementieren von logging-Funktionalität für E-Mails mit log4j.

Habe ich die Abhängigkeit für die log4j:1.2.17 sowie die jar in den class-path. Ich versuche, führen Sie einen Test mit arquillian. Aber jedes mal bin ich immer die gleichen Fehler.

Ich kenne sein kommen, wie in ich bin mit dem Level, anstatt Priorität, das ist jetzt veraltet. Ich habe das richtige Glas und die Einfuhren aber immer noch den Fehler herrscht, wenn ich den Test ausführen.

Habe ich bezeichnete diese verbindungen als gut, aber nichts funktioniert für mich.

Was verursacht diese Maven/JBehave Fehler?

https://community.oracle.com/thread/969941?start=0

Weiß jemand, wie man dieses Problem lösen Fehler?

Dies ist ein Ausschnitt aus meiner EmailTest.java Klasse:

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.*;
import org.junit.runner.RunWith;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.RootLogger;
import javax.inject.Inject;

       public class EmailTest{
       @Inject
       private Email email;

       @Deployment //(testable = true)
       public static JavaArchive createTestArchive(){

        return ShrinkWrap.create(JavaArchive.class, "test.jar")
                .addClasses(ErrorEmailThrottle.class)
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");}

        @Test
        public void noFatalError(){            
        Assert.assertEquals(email.isTriggeringEvent(createLogEvent(Level.FATAL, System.currentTimeMillis())), true);
        Assert.assertEquals(email.isInThrottleMode(), false);
                    }
        .....

        private LoggingEvent createLogEvent(Level level, long time) {
                return new LoggingEvent("Email", new RootLogger(Level.INFO) , time, level, "Email message", null);
              }
        }

Hier ist meine pom.xml Abhängigkeit:

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
   <!--<scope>test</scope>-->
   <exclusions>
        <exclusion>
          <groupId>com.sun.jdmk</groupId>
          <artifactId>jmxtools</artifactId>
        </exclusion>
        <exclusion>
           <groupId>com.sun.jmx</groupId>
           <artifactId>jmxri</artifactId>
        </exclusion>
    </exclusions>
 </dependency>

Immer diese Fehlermeldung:

java.lang.NoClassDefFoundError: org/apache/log4j/Priority
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructors(Class.java:1651)
    at org.junit.runners.model.TestClass.<init>(TestClass.java:39)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:75)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57)
    at org.jboss.arquillian.junit.Arquillian.<init>(Arquillian.java:60)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:31)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
    at org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:170)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:135)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:745)


Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Priority
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
    ... 49 more
Ich habe es wieder und ich denke mal das Problem kommt von der Sache, dass die maven-Abhängigkeit von log4j 1.2.17 ist, dass die level.java und priority.java als Klassen in der org.apache.log4j-Ordner in der Erwägung, dass, wenn ich das hinzufügen der log4j 1.2.17.jar in meine Projekt-Struktur/classpath dann kann ich sehen, level.class und priority.class unter der org.apache.log4j-Ordner. Und diese sind ein bisschen unterschiedliche Dateien. Ich kann sehen, dass dieser Unterschied bis jetzt aber nicht sicher, ob das die Ursache ist oder nicht, und wenn es dann, wie es zu lösen ? Weiß jemand, wie dieses Problem zu beheben ?

InformationsquelleAutor A.S | 2015-11-24

Schreibe einen Kommentar