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
InformationsquelleAutor A.S | 2015-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich gerade überprüft Log4j 1.2.17-source-code, und
org.apache.log4j.Priority
ist immer noch da.Daher ist das problem wahrscheinlich, weil Sie Ihre Abhängigkeit nicht ordnungsgemäß Hinzugefügt.
Möglicherweise gibt es mehrere Möglichkeiten:
<dependency>
block unter<dependencyManagement>
statt<dependencies>
mvn dependency:tree
an dem Projekt. Sie können sehen, welche version vonlog4j
genommenlog4j:log4j:1.2.17
in Ihrem lokalen repository etc.InformationsquelleAutor Adrian Shum