Maven: mvn install导致编译失败。

4
当运行命令“mvn clean”时,它返回构建成功,但是当运行“mvn install”时,它返回编译失败。请帮我追踪引起错误的原因。提前致谢。
编辑:添加日志。


[ERROR] \Users...\workspace\project\src\main\java\c
om\project\Interceptor.java:[30,22] cannot find symbo
l
symbol  : variable HttpServletResponse
location: class com.project.Interceptor
[INFO] 49 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.730s
[INFO] Finished at: Thu Mar 08 11:14:16 CST 2012
[INFO] Final Memory: 9M/24M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
3.2:compile (default-compile) on project project: Compilation failure: Co
mpilation failure:
[ERROR] \Users...\workspace\project\src\main\java\c
om\project\Interceptor.java:[3,25] package javax.serv
let.http does not exist
[ERROR] \Users...\workspace\project\src\main\java\c
om\project\Interceptor.java:[4,25] package javax.serv
let.http does not exist
[ERROR] \Users...\workspace\project\src\main\java\c
om\project\Interceptor.java:[26,26] cannot find symbo
l
......
[ERROR] symbol  : variable HttpServletResponse
[ERROR] location: class com.project.Interceptor
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on
 project mobile-gateway: Compilation failure
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:213)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
        at org.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)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation fail
ure
        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompiler
Mojo.java:656)
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:209)
        ... 19 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] <a rel="nofollow" href="http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc">http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc</a>
eption

编辑2:顺便说一下,我正在使用Eclipse Indigo IDE和Glassfish 3.1。


[错误] 符号: 变量HttpServletResponse [错误] 位置: 类 com.project.Interceptor 问题出在这里,但您没有包含输出的关键部分,该部分会具体说明编译错误。mvn clean 删除了以前构建的所有痕迹,因此很少会失败,mvn install 实际上开始编译您的Java代码,因此如果代码有问题,它将产生像您收到的编译错误一样的编译错误。 - SpellingD
@SpellingD,感谢您的建议。我使用了“import javax.servlet.http.HttpServletRequest;”,保存后代码中没有出现任何编译错误,但在运行“mvn install”之后却出现了错误。 - iamtheexp01
你应该将第一次出现错误的日志部分,包括在 BUILD FAILURE 之前。它应该位于 <project name> 后面的文本块中。 - SpellingD
@SpellingD,日志已更新。我不知道为什么无法找到HttpServletResponse。我需要添加什么吗? - iamtheexp01
1个回答

4
您缺少一些Java EE的依赖项,请尝试在您的pom.xml文件中添加以下依赖项(您可能需要更多):
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
</dependency>

希望这能帮到你。

我在pom.xml中添加了它并且它可以工作。但是为什么它必须在pom.xml中?我已经包含了ServerRuntime库GlassFish 3.1和javax.servlet已经在那里,但仍然找不到它? - iamtheexp01
根据您的Maven输出,编译时需要servlet-api.jar,这通常意味着您有一些明确导入javax.servlet.http包并使用HttpServletResponse类的类。将其添加到GlassFish lib文件夹仅用于让GlassFish在运行时解析它。@iamthe.exception - yorkw
2
你应该为它定义一个作用域。<scope>provided</scope>,因为它将被打包到你的构件(war)中。 - khmarbaise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接