2017-09-19 8 views
0

J'essaye d'ajouter un DB Appender dans ma configuration de logback. Voici la partie du fichier logback.xml lié à la question:logback. classe not found exception

<appender name="db" class="src.main.java.database.SqliteLogbackAppender"> 
    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 
     <driverClass>org.sqlite.JDBC</driverClass> 
     <url>jdbc:sqlite:/home/db/logger.db</url> 
    </connectionSource> 
</appender> 

La chose est, j'utiliser un appender personnalisé, qui est situé dans ma scr.main.java ... etc dossier , mais pas dans bibliothèque logback classique

quand je lance mon application, je reçois l'erreur suivante:

09:02:06,682 |-ERROR in [email protected]:78 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type src.main.java.database.SqliteLogbackAppender 
     at ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type src.main.java.database.SqliteLogbackAppender 
     at  at ch.qos.logback.core.joran.action.AppenderAction.begin(AppenderAction.java:76) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:269) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:145) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:128) 
     at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:155) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:142) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:103) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53) 
     at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75) 
     at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150) 
     at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) 
     at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) 
     at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:149) 
     at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 
     at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:390) 
     at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:340) 
     at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:361) 
     at  at interaction.Commander.<clinit>(Commander.java:14) 
     at  at servlets.ExecuteServlet.<clinit>(ExecuteServlet.java:24) 
     at  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at  at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:120) 
     at  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1041) 
     at  at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:770) 
     at  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) 
     at  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
     at  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) 
     at  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
     at  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
     at  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651) 
     at  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
     at  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
     at  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498) 
     at  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
     at  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) 
     at  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1374) 
     at  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
     at  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
     at  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
     at  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at  at java.lang.Thread.run(Thread.java:748) 
Caused by: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type src.main.java.database.SqliteLogbackAppender 
     at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:69) 
     at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassName(OptionHelper.java:45) 
     at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassName(OptionHelper.java:34) 
     at  at ch.qos.logback.core.joran.action.AppenderAction.begin(AppenderAction.java:52) 
     at  ... 43 common frames omitted 
Caused by: java.lang.ClassNotFoundException: src.main.java.database.SqliteLogbackAppender 
     at  at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1269) 
     at  at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104) 
     at  at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameAndParameter(OptionHelper.java:56) 
     at  ... 46 common frames omitted 

Cependant, quand j'écris sur classpath logback.xml configuration, je suis en mesure d'accéder au fichier avec l'interface IDE IntellijIdea (en cliquant sur ctrl + left_mouse_button), donc je crois qu'il n'y a pas de fautes de frappe.

Cordialement.

Répondre

1

Veillez à utiliser le nom de classe complet, y compris package, pour votre appender dans le fichier XML. Ne spécifiez pas le chemin d'accès à la classe. "Src.main.java.database.SqliteLogbackAppender" semble inclure les dossiers Maven (src/main/java) et n'est donc probablement pas le nom de classe réel.

Peut-être que vous vouliez simplement dire 'database.SqliteLogbackAppender'?

+0

Merci à tous! C'était exactement le problème! – Vittori0