简体   繁体   English

ClassNotFoundException:org.slf4j.LoggerFactory Maven

[英]ClassNotFoundException: org.slf4j.LoggerFactory Maven

I'm trying to run a .war file with tomcat on a server. 我正在尝试在服务器上使用tomcat运行.war文件。 Everytime I startup tomcat it should set a timer, which runs the init()-method of the .war file once in a week. 每次我启动tomcat时,都应该设置一个计时器,该计时器每周运行一次.war文件的init()方法。 I'm doing this with the CronTrigger from Quartz. 我正在使用Quartz的CronTrigger进行此操作。 The JobBuilder calls the class HelloJob, in which (when running) a huge excel table gets created. JobBuilder调用类HelloJob,在其中运行时会创建一个巨大的excel表。

public class CronTrigger implements Servlet

{    
    public void init(ServletConfig arg0) throws ServletException {

        JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("Batch Validation Trigger", "group1").build();

        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("Batch Validation Trigger", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0 45 14 ? * TUE")).build();
        Logger root = (Logger)LoggerFactory.getLogger(CronTrigger.class);
        root.isDebugEnabled();
        //schedule it
        Scheduler scheduler = null;
        try {
            scheduler = new StdSchedulerFactory().getScheduler();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
        try {
            scheduler.start();
        } catch (SchedulerException e1) {
            e1.printStackTrace();
        }
        try {
            scheduler.scheduleJob(job, trigger);
        } catch (SchedulerException e2) {
            e2.printStackTrace();
        }
    }
}    

My web.xml: 我的web.xml:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>WOQC</display-name>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
      <servlet>
    <servlet-name>CronTrigger</servlet-name>
    <servlet-class>timer.CronTrigger</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CronTrigger</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

When I try to run it, it returns one error and one exception: NoClassDefFoundError: 当我尝试运行它时,它返回一个错误和一个异常:NoClassDefFoundError:

SEVERE: StandardWrapper.Throwable
    java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at timer.CronTrigger.init(CronTrigger.java:48)
        at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5231)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5518)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        ... 13 more

ClassNotFoundException: ClassNotFoundException的:

SEVERE: Servlet /WO threw load() exception
java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at timer.CronTrigger.init(CronTrigger.java:48)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5231)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5518)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

I already have read the questions about this exception and added slf4j-nop-1.7.7.jar and slf4j-api-1.7.7.jar to the classpath. 我已经阅读了有关此异常的问题,并将slf4j-nop-1.7.7.jar和slf4j-api-1.7.7.jar添加到类路径中。 I know that the problem belongs to the implementation of the LoggerFactory, but I couldn't find a good example to solve my problem. 我知道问题属于LoggerFactory的实现,但是我找不到解决该问题的好例子。 If you have any idea, please respond. 如果您有任何想法,请回复。

Thanks in advance! 提前致谢!

ClassNotFoundException prompts when third party libraries are not identified by the IDE itself. 当IDE本身未标识第三方库时,ClassNotFoundException会提示。 You should add you jars files (third party libraries) into WEB-INF/lib folder. 您应该将jar文件(第三方库)添加到WEB-INF / lib文件夹中。 Now it should function properly. 现在它应该可以正常运行了。

add your slf4j.jar in lib directory. 在lib目录中添加slf4j.jar。

War file structure is as follows War文件的结构如下

WebContent
    --- WEB-INF
         ----web.xml (Deployment Descriptor)
         ---- lib 
                --- Add your libraries here i.e. slf4j*.jar and others

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ClassNotFoundException: org.slf4j.LoggerFactory - ClassNotFoundException: org.slf4j.LoggerFactory 引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory - Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory DefaultHttpClient引发原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory - DefaultHttpClient throws Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 从命令行-java.lang.ClassNotFoundException:org.slf4j.LoggerFactory - From command line - java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Websphere 8.5.5上的Solr:与org.slf4j.LoggerFactory的链接错误 - Solr on Websphere 8.5.5 : Linkage Error with org.slf4j.LoggerFactory NoClassDefFoundError:org.slf4j.LoggerFactory是受限制的类 - NoClassDefFoundError: org.slf4j.LoggerFactory is a restricted class java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory - java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory 如何修复NoClassDefFoundError:intelliJ中的org.slf4j.LoggerFactory(但是Eclipse可以正常工作) - How to fix NoClassDefFoundError: org.slf4j.LoggerFactory in intelliJ (but eclipse works fine) Android Studio Jbox2D java.lang.NoClassDefFoundError:org.slf4j.LoggerFactory - Android Studio Jbox2D java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory java:找不到符号符号:类getLogger位置:类org.slf4j.LoggerFactory - java: cannot find symbol symbol: class getLogger location: class org.slf4j.LoggerFactory
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM