2011-08-04 76 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