2011-08-04 77 views
1

我正在使用Maven 3.0.3和Jetty插件。我收到以下错误:在使用Maven Jetty插件部署战争时获取FileNotFoundException

java.io.FileNotFoundException:无法打开ServletContext的资源 [/WEB-INF/applicationContext.xml的

我不明白,这是因为文件存在于target/mywar/WEB-INF/applicationContext.xml。我把这个文件在我web.xml

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"> 
    <display-name>/jx-production-1.0-SNAPSHOT</display-name> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param>Any ideas what I'm missing? Here is my Jetty plugin definition in my pom.xml … 
    <profile> 
     <id>jetty</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.mortbay.jetty</groupId> 
        <artifactId>jetty-maven-plugin</artifactId> 
        <version>7.2.2.v20101205</version> 
        <configuration> 
         <webAppConfig> 
          <contextPath>/all-new-jx</contextPath> 
          <descriptor>target/jx-1.0-SNAPSHOT/WEB-INF/web.xml</descriptor> 
         </webAppConfig> 
         <jettyConfig>config/jetty7/jetty.xml</jettyConfig> 
         <scanIntervalSeconds>10</scanIntervalSeconds> 
         <contextHandlers> 
          <contextHandler implementation="org.eclipse.jetty.server.handler.ContextHandler"> 
           <contextPath>/all-new-jx-web</contextPath> 
           <resourceBase>${project.basedir}/target/web</resourceBase> 
           <handler implementation="org.eclipse.jetty.server.handler.ResourceHandler" /> 
          </contextHandler> 
         </contextHandlers> 
        </configuration> 
        <dependencies> 
         <dependency> 
          <groupId>org.eclipse.jetty</groupId> 
          <artifactId>jetty-rewrite</artifactId> 
          <version>7.2.2.v20101205</version> 
          <type>jar</type> 
          <scope>runtime</scope> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

这里的长,讨厌的错误我得到:

2011-08-04 14:08:56.677:警告::上下文启动失败 omjpJettyWebAppContext {/ all-new-jx,file:/ Users/davea/Documents/workspace/NissanUSA2/Technology/nna/mycousa/jx/src/main/webapp /},file:/ Users/davea/Documents/workspace/NissanUSA2/Technology/nna/mycousa/jx/src/main/webapp/ org.springframework.beans.factory.BeanDefinitionStoreException: IOException从ServletContext资源解析XML文档 [/WEB-INF/applicationContext.xml];嵌套异常是 java.io.FileNotFoundException:无法打开ServletContext资源 [/WEB-INF/applicationContext.xml] org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:641) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:228) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1181) 在 org.eclipse.jetty.server .handler.ContextHandler.doStart(ContextHandler.java:584) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:496) at org.eclipse.jetty.util.compo nent.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection。 DOSTART(ContextHandlerCollection.java:164) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection。的java:226) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93) 在有机eclipse.jetty.server.Server.doStart(Server.java:243)at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.apache.maven.plugin.DefaultBuildPluginManager .executeMojo(DefaultBuildPluginManager.java:101) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor。的java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在有机apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)at org.apache.maven.cli.MavenCli.execute(MavenCli.java: 537)在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)at org.codehaus.plexus.classworlds.launcher。 Launcher.launchEnhanced(Launcher.java:290) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode( Launcher.java:409) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 造成的: java.io.FileNotFoundException:无法打开ServletContext的资源[/ WEB-INF /applicationContext.xml]在 org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.jav一:641) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:228) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1181) 在 有机.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:584) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:496) 在 org.eclipse.jetty.util .component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226) 在 org.eclipse.jetty.server .handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:164) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerCollection .doStart(HandlerCollection.java:226) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper的.java:93) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93 ) at org.eclipse.jetty.server.Server.doStart(Server.java:243)at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) at org.apache.maven .plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 在 org.apache.maven.lifecycle.internal.MojoExecutor .execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder 。的java:84) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 处 org.apache.maven.DefaultMaven org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) .execute(DefaultMaven.java:156)at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 在 org.codehaus .plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

谢谢你的建议。

回答

6

我假设你正在使用运行目标 - 即。 mvn jetty:run?这将运行一个webapp“就地”,这意味着它在target/classes或您的项目依赖项中查找类,并从src/main/webapp(假设默认目录布局)加载web资源。它不会在target/mywar/...中找到任何东西。您可以使用其他jetty plugin goals之一,但我建议将applicationContext.xml移动到类路径中,并使用classpath:/applicationContext.xml作为contextConfigLocation

+0

是的,我正在使用goal jetty:运行并将必要的资源复制到src/main/webapp工作,非常感谢您的解释。 – Dave

+0

码头插件目标链接不再有效,因为codehaus移动 – sweetfa