首页 文章

使用Maven Jetty插件部署war时获取FileNotFoundException

提问于
浏览
1

我正在使用Maven 3.0.3和Jetty插件 . 我收到以下错误:

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:WARN ::上下文启动失败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解析XML文档ServletContext资源[/WEB-INF/applicationContext.xml];嵌套异常是java.io.FileNotFoundException:无法在org.eclipse的org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:641)中打开ServletContext资源[/WEB-INF/applicationContext.xml] . jetg.servlet.ServletContextHandler.startContext(ServletContextHandler.java:228)atg.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1181)org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler . java:584)org.eclipse.jetty中的org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:496)或org.eclipse.jetty上的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)位于org.eclipse.jetty.util.component.AbstractLifeCycle.start的org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:164)的.server.handler.HandlerCollection.doStart(HandlerCollection.java:226) (AbstractLifeCycle.java:55)org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java: 226)org.eclipse.jetty.start(AbstractLifeCycle.java:55)中的org.eclipse.jetty.util.compart.AbstractLifeCycle.start(AbstractLifeCycle.java:55)org.eclipse.jetty上的org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93)位于org.eclipse.jetty.server.Server.doStart(服务器)的org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:93)的.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) .java:243)org.apache上的org.apache.maven.plu.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)上的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) . maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)位于org.apache.maven.maven.life.internal.MojoExecutor的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) . 执行(MojoExecutor.java:145)org.apache.maven.life.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)org.apache.maven.lifecycle.internal.LifecycleMod uleBuilder.buildProject(LifecycleModuleBuilder.java:59)org.apache.maven.life.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java: 161)org.apache.maven.maven.DefaultMaven.exe执行中的org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)org.apache.maven.Maven.cli.MavenCli.execute(MavenCli) .java:537)org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)org.apache.maven.cli.MavenCli.main(MavenCli.java:141)org.codehaus.plexus . classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)at 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.xm l] org.eclipse.jetty.web,org.eclipse.jet.位于org.eclipse.jetty.webapp.WebAppContext.doStart的org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:584)中的.WebAppContext.startContext(WebAppContext.java:1181)(WebAppContext.java:496 )org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:226)at atorg.eclipse.jetty.server.handstart(ContextHandlerCollection.java:164)位于org.eclipse.jetty.server的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)中的org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart . handler.HandlerCollection.doStart(HandlerCollection.java:226)atg.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper . java:93)atg.eclipse.jetty.util.compart.AbstractLifeCycle.start(AbstractLifeCycle.java:55)atg.eclipse.jet.server.hand.HandlerWrapper.doStart(HandlerWrapper.java:93)org.eclipse位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo的Org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)中的.jetty.server.Server.doStart(Server.java:243)(DefaultBuildPluginManager) .java:101)在org.apache.maven.maven.life.internal.MojoExecutor的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) .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的org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) . life.internal.LifecycleStarter.execute(LifecycleStarter.java:161)org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)atg.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)org.apache.maven.cli.MavenCli.main(MavenCli) .java:141)org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)at or or g.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

谢谢你的建议 .

1 回答

  • 7

    我假设你正在使用运行目标 - 即 . mvn jetty:run ?运行webapp "in place",意味着它在 target/classes 或项目依赖项中查找类,并从 src/main/webapp 加载Web资源(假设默认目录布局) . 它在 target/mywar/... 中找不到任何内容 . 您可以使用其中一个jetty plugin goals,但我建议您只将applicationContext.xml移动到类路径中并使用 classpath:/applicationContext.xml 作为 contextConfigLocation .

相关问题