Linux 启动 jetty 服务器时出现 NoClassDefFoundError
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16194256/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
NoClassDefFoundError while starting up jetty Server
提问by Auslay
I am trying to host my webapp (spring) in jetty server. I copied my war file to the 'webapp' folder in the jetty server. I am not trying to embed the jetty server, but trying to host the app within the jetty (like tomcat).
我正在尝试在码头服务器中托管我的 webapp(spring)。我将我的战争文件复制到码头服务器中的“webapp”文件夹。我不是试图嵌入码头服务器,而是试图在码头内托管应用程序(如 tomcat)。
I dint install jetty, I just downloaded the jetty7 zip and extracted to get the server.
我没有安装jetty,我只是下载了jetty7 zip并解压缩以获取服务器。
I need to set this up in 3 linux machines. In One machine the server is starting up just fine.No issues.
我需要在 3 台 linux 机器上进行设置。在一台机器上,服务器启动得很好。没有问题。
But in the other two, when the Server is starting up it is showing the following error.
但在另外两个中,当服务器启动时,它显示以下错误。
2013-04-24 18:52:59.540:INFO::started o.e.j.w.WebAppContext{/cpewebapp,file:/tmp/jetty-0.0.0.0-9080-cpewebapp.war-_cpewebapp-any-/webapp/},/home/manooja/jetty-hightide-7.4.0.v20110414/webapps/cpewebapp.war 2013-04-24 18:52:59.648:WARN::FAILED spring: java.lang.NoClassDefFoundError: org/springframework/web/context/support/DefaultWebEnvironment 2013-04-24 18:52:59.648:WARN::FAILED o.e.j.w.WebAppContext{/cpewebapp,file:/tmp/jetty-0.0.0.0-9080-cpewebapp.war-_cpewebapp-any-/webapp/},/home/manooja/jetty-hightide-7.4.0.v20110414/webapps/cpewebapp.war: java.lang.NoClassDefFoundError: org/springframework/web/context/support/DefaultWebEnvironment 2013-04-24 18:52:59.649:WARN::Unable to reach node goal: started java.lang.NoClassDefFoundError: org/springframework/web/context/support/DefaultWebEnvironment at org.springframework.web.servlet.HttpServletBean.(HttpServletBean.java:90) at org.springframework.web.servlet.FrameworkServlet.(FrameworkServlet.java:96) at org.springframework.web.servlet.DispatcherServlet.(DispatcherServlet.java:128) 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:372) at java.lang.Class.newInstance(Class.java:325) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:606) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:748) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:426) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:260) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:763) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:245) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1158) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:587) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:436) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36) at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:180) at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:482) at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:135) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:137) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:50) at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:601) at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:531) at org.eclipse.jetty.util.Scanner.scan(Scanner.java:394) at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:329) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:114) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:543) at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:218) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:41) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:50) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:94) at org.eclipse.jetty.server.Server.doStart(Server.java:253) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.xml.XmlConfiguration.run(XmlConfiguration.java:1220) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1143) 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 org.eclipse.jetty.start.Main.invokeMain(Main.java:477) at org.eclipse.jetty.start.Main.start(Main.java:623) at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:273) at org.eclipse.jetty.start.Main.main(Main.java:81) Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.support.DefaultWebEnvironment at java.net.URLClassLoader.run(URLClassLoader.java:366) at java.net.URLClassLoader.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:420) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:373) at org.springframework.web.servlet.HttpServletBean.(HttpServletBean.java:90) at org.springframework.web.servlet.FrameworkServlet.(FrameworkServlet.java:96) at org.springframework.web.servlet.DispatcherServlet.(DispatcherServlet.java:128) 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:372) at java.lang.Class.newInstance(Class.java:325) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:606) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:748) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:426) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:260) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:763) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:245) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1158) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:587) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:436) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36) at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:180) at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:482) at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:135) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:137) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:50) at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:601) at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:531) at org.eclipse.jetty.util.Scanner.scan(Scanner.java:394) at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:329) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:114) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:543) at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:218) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:41) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:50) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:94) at org.eclipse.jetty.server.Server.doStart(Server.java:253) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.xml.XmlConfiguration.run(XmlConfiguration.java:1220) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1143) 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 org.eclipse.jetty.start.Main.invokeMain(Main.java:477) at org.eclipse.jetty.start.Main.start(Main.java:623) at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:273) at org.eclipse.jetty.start.Main.main(Main.java:81) 2013-04-24 18:52:59.654:INFO::Deployable added: /home/manooja/jetty-hightide-7.4.0.v20110414/webapps/root 2013-04-24 18:52:59.849:INFO::started o.e.j.w.WebAppContext{/,file:/home/manooja/jetty-hightide-7.4.0.v20110414/webapps/root/},/home/manooja/jetty-hightide-7.4.0.v20110414/webapps/root 2013-04-24 18:52:59.861:INFO::Deployment monitor /home/manooja/jetty-hightide-7.4.0.v20110414/contexts at interval 1 2013-04-24 18:52:59.950:INFO::Started [email protected]:9080 STARTING
Kindly note that the default port have been changed to 9080.
请注意,默认端口已更改为 9080。
I have an inkling that it might be some configuration change, as it is working fine in one machine. Could you please help me with a guidance to solve this?
我有一种暗示,这可能是一些配置更改,因为它在一台机器上运行良好。你能帮我指导解决这个问题吗?
java -jar start.jar --version
java -jar start.jar --version
Active Options: [Server, client, ext, jmx, jsp, resources, websocket] Version Information on 25 entries in the classpath. Note: order presented here is how they would appear on the classpath. changes to the OPTIONS=[option,option,...] command line option will be reflected here. 0: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-xml-9.0.2.v20130417.jar 1: 3.0.0.v201112011016 | ${jetty.home}/lib/servlet-api-3.0.jar 2: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-http-9.0.2.v20130417.jar 3: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-continuation-9.0.2.v20130417.jar 4: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-server-9.0.2.v20130417.jar 5: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-security-9.0.2.v20130417.jar 6: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-servlet-9.0.2.v20130417.jar 7: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-webapp-9.0.2.v20130417.jar 8: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-deploy-9.0.2.v20130417.jar 9: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-client-9.0.2.v20130417.jar 10: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-jmx-9.0.2.v20130417.jar 11: 2.2.0.v201303151357 | ${jetty.home}/lib/jsp/com.sun.el-2.2.0.v201303151357.jar 12: 2.2.0.v201303151357 | ${jetty.home}/lib/jsp/javax.el-2.2.0.v201303151357.jar 13: 1.2.0.v201105211821 | ${jetty.home}/lib/jsp/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar 14: 2.2.0.v201112011158 | ${jetty.home}/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar 15: 2.2.2.v201112011158 | ${jetty.home}/lib/jsp/org.apache.jasper.glassfish-2.2.2.v201112011158.jar 16: 1.2.0.v201112081803 | ${jetty.home}/lib/jsp/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar 17: 3.8.2.v20130121-145325 | ${jetty.home}/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar 18: (dir) | ${jetty.home}/resources 19: 9.0.2.v20130417 | ${jetty.home}/lib/websocket/websocket-api-9.0.2.v20130417.jar 20: 9.0.2.v20130417 | ${jetty.home}/lib/websocket/websocket-common-9.0.2.v20130417.jar 21: 9.0.2.v20130417 | ${jetty.home}/lib/websocket/websocket-server-9.0.2.v20130417.jar 22: 9.0.2.v20130417 | ${jetty.home}/lib/websocket/websocket-servlet-9.0.2.v20130417.jar 23: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-util-9.0.2.v20130417.jar 24: 9.0.2.v20130417 | ${jetty.home}/lib/jetty-io-9.0.2.v20130417.jar
dir ./WEB-INF/lib/
目录 ./WEB-INF/lib/
antlr-2.7.6.jar
aopalliance-1.0.jar
bcprov-jdk15on-148.jar
c3p0-0.9.1.jar
commons-collections-3.2.1.jar
commons-dbcp-1.3.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-pool-1.5.4.jar
cpewebapp.jar
displaytag-1.2.jar
dom4j-1.6.1.jar
gson-1.6.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.4.Final.jar
hibernate-entitymanager-3.6.4.Final.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-validator-4.2.0.Final.jar
Hymanson-core-asl-1.8.0.jar
Hymanson-mapper-asl-1.8.0.jar
javassist-3.12.0.GA.jar
json.jar
jta.jar
log4j-1.2.16.jar
servlet-2.3.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
spring-aop-3.1.0.RELEASE.jar
spring-asm-3.1.0.RELEASE.jar
spring-beans-3.1.0.RELEASE.jar
spring-context-3.1.0.RELEASE.jar
spring-context-support-3.1.0.RELEASE.jar
spring-core-3.1.0.RELEASE.jar
spring-expression-3.1.0.RELEASE.jar
spring-jdbc-3.1.0.RELEASE.jar
spring-ldap-core-1.3.0.RELEASE.jar
spring-ldap-core-tiger-1.3.0.RELEASE.jar
spring-orm-3.1.0.RELEASE.jar
spring-oxm-3.1.0.RELEASE.jar
spring-security-config-3.1.0.RELEASE.jar
spring-security-core-3.1.0.RELEASE.jar
spring-security-ldap-3.1.0.RELEASE.jar
spring-security-web-3.1.0.RELEASE.jar
spring-tx-3.1.0.RELEASE.jar
spring-web-3.1.0.RELEASE.jar
spring-webmvc-3.1.0.M1.jar
spring-web-servlet-3.1.0.RELEASE.jar
sqlite-jdbc-3.7.2.jar
velocity-1.6.2.jar
velocity-tools-view-2.0.jar
采纳答案by Auslay
As Stevie pointed out in the comments, the issue was an additional Jar file which got into the war.
正如 Stevie 在评论中指出的那样,问题是一个额外的 Jar 文件进入了战争。
I removed the Jar, in my case spring-webmvc-3.1.0.M1.jar
, from WEB-INF/lib
and restarted jetty.It started up fine.
在我的情况下spring-webmvc-3.1.0.M1.jar
,我从WEB-INF/lib
码头移除了 Jar并重新启动了它。它启动得很好。
This went unnoticed as it dint show up during compile/build time (got the jar ordered in eclipse), nor did it showed up in the first machine i deployed.
这没有引起注意,因为它在编译/构建期间出现(在 eclipse 中订购了 jar),它也没有出现在我部署的第一台机器中。
Many thanks for the help.
非常感谢您的帮助。
回答by u6493628
You can change your project config, like I use maven like this page. http://mvnrepository.com/artifact/redis.clients/jedis/2.8.1
你可以改变你的项目配置,就像我在这个页面上使用 maven 一样。 http://mvnrepository.com/artifact/redis.clients/jedis/2.8.1
Then, when you use "update maven project" in eclipse et, it will download the jedis.jar and other relationship files for complier. It will work in jetty to fix problem.
然后,当你在eclipse et中使用“update maven project”时,它会下载jedis.jar等关系文件供编译器使用。它将在码头工作以解决问题。
回答by guillaume girod-vitouchkina
In the case you use directly jetty as Eclipse J2EE integrated server, sometimes, it doesn't find some libraries (I don't understand why some are not found, by only a few), and throws exception of this kind (NoClassDefFound).
在直接使用jetty作为Eclipse J2EE集成服务器的情况下,有时会找不到一些库(我不明白为什么有些找不到,只有少数),并抛出这种异常(NoClassDefFound)。
So you have to put in the project source (directory WEB-INF): your jars
restart the server
it put the jars in runtime WEB-INF: Data\workspace.metadata.plugins\org.eclipse.wst.server.core\tmpX\MyApp\WEB-INF\lib
and it works.
所以你必须放入项目源(目录WEB-INF):你的jars
重启服务器
它将罐子放在运行时 WEB-INF 中:Data\workspace.metadata.plugins\org.eclipse.wst.server.core\tmpX\MyApp\WEB-INF\lib
它有效。