嵌入式Jetty java.lang.NoClassDefFoundError:org/mortbay/log/log

嵌入式Jetty java.lang.NoClassDefFoundError:org/mortbay/log/log,java,jetty,embedded-jetty,Java,Jetty,Embedded Jetty,我正在尝试为一个通常部署到Tomcat的应用程序编写一个小型嵌入式Jetty程序。我的应用程序似乎初始化良好,但Jetty服务器启动时抛出一个与日志记录相关的错误。我在src目录中有一个log4j.properties文件,我将log4j和slf4j-log4j12作为Maven依赖项包括在内。知道我犯了什么错误吗 谢谢 WARN - FAILED org.eclipse.jetty.server.Server@6b0e9064: java.lang.NoClassDefFoundError:

我正在尝试为一个通常部署到Tomcat的应用程序编写一个小型嵌入式Jetty程序。我的应用程序似乎初始化良好,但Jetty服务器启动时抛出一个与日志记录相关的错误。我在src目录中有一个log4j.properties文件,我将log4j和slf4j-log4j12作为Maven依赖项包括在内。知道我犯了什么错误吗

谢谢

WARN - FAILED org.eclipse.jetty.server.Server@6b0e9064: java.lang.NoClassDefFoundError: org/mortbay/log/Log
java.lang.NoClassDefFoundError: org/mortbay/log/Log
    at com.sun.org.apache.commons.logging.JettyLog.<init>(JettyLog.java:36)
    at com.sun.org.apache.commons.logging.LogFactory.getLog(LogFactory.java:35)
    at org.apache.jasper.servlet.JspServlet.<clinit>(JspServlet.java:116)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at java.lang.Class.newInstance0(Class.java:374)
    at java.lang.Class.newInstance(Class.java:327)
    at org.eclipse.jetty.server.handler.ContextHandler$Context.createInstance(ContextHandler.java:2307)
    at org.eclipse.jetty.servlet.ServletContextHandler$Context.createInstance(ServletContextHandler.java:1164)
    at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1151)
    at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:976)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:521)
    at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:349)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:810)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1346)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:743)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:491)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:117)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:117)
    at org.eclipse.jetty.server.Server.start(Server.java:355)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
    at org.eclipse.jetty.server.Server.doStart(Server.java:324)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at com.foo.rscontrolcenter.ControlCenter.main(ControlCenter.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

您选择了错误的JspServlet实现

它正在寻找基于
org.mortbay.jetty
的类,这是针对旧jetty 6和更早版本的类

示例项目

查看github上的
jetty项目/embedded jetty jsp
示例,了解嵌入式jetty+jsp支持的工作示例

注意:

  • 文件位于/pom.xml中
  • 在org.eclipse.jetty.demo.Main中
  • 在org.eclipse.jetty.demo.Main中
  • 在org.eclipse.jetty.demo.Main中
依赖关系

下面是该示例项目正在使用的依赖关系树

[embedded jetty jsp]$mvn依赖项:树
[信息]正在扫描项目。。。
[信息]
[信息]------------------------------------------------------------------------
[信息]构建嵌入式jetty jsp 1-SNAPSHOT
[信息]------------------------------------------------------------------------
[信息]
[信息]---maven依赖插件:2.1:tree(默认cli)@embedded jetty jsp---
[信息]org.eclipse.jetty.demo:embedded jetty jsp:jar:1-SNAPSHOT
[INFO]+-javax.servlet:javax.servlet api:jar:3.1.0:compile
[信息]+-org.eclipse.jetty:jettywebapp:jar:9.1.0.v20131115:compile
[信息]|+-org.eclipse.jetty:jetty xml:jar:9.1.0.v2013115:compile
[信息]|| \-org.eclipse.jetty:jetty-util:jar:9.1.0.v20131115:compile
[INFO]\-org.eclipse.jetty:jetty servlet:jar:9.1.0.v20131115:compile
[INFO]\-org.eclipse.jetty:jetty-security:jar:9.1.0.v20131115:compile
[信息]\-org.eclipse.jetty:jetty服务器:jar:9.1.0.v20131115:compile
[信息]|+-org.eclipse.jetty:jetty http:jar:9.1.0.v2013115:compile
[INFO]\-org.eclipse.jetty:jetty io:jar:9.1.0.v2013115:compile
[信息]\-org.eclipse.jetty:jetty jsp:pom:9.1.0.v20131115:compile
[INFO]+-org.eclipse.jetty.toolchain:jetty模式:jar:3.1.M0:compile
[INFO]+-javax.servlet.jsp:javax.servlet.jspapi:jar:2.3.1:compile
[INFO]+-org.glassfish.web:javax.servlet.jsp:jar:2.3.2:compile
[INFO]+-org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile
[INFO]+-org.eclipse.jetty.orbit:org.apache.taglibs.standard.glassfish:jar:1.2.0.v201112081803:compile
[INFO]\-org.glassfish:javax.el:jar:3.0.0:compile
[信息]------------------------------------------------------------------------
[信息]建立成功
[信息]------------------------------------------------------------------------
[信息]总时间:2.528秒
[信息]完成时间:2013年12月5日星期四11:03:49
[信息]最终存储空间:12米/484米
[信息]------------------------------------------------------------------------

设置
类所在的类路径<代码>java-cp bin com.path.ControlCenter
例如