Java Maven编译失败(但Eclipse下编译成功)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3135871/
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
Maven compilation failes (but compilation under Eclipse is successful)
提问by jwaliszko
While building my web project from Eclipse, everything is fine: no errors, no warnings.
从Eclipse构建我的 web 项目时,一切都很好:没有错误,没有警告。
However while building project with Mavenit failes. Below is the output form mvn compile
:
但是,在使用Maven构建项目时失败了。下面是输出形式mvn compile
:
c:\Users\jwa\Desktop\tets\traffic_web>mvn compile -e + Error stacktraces are turned on. [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building traffic_web [INFO]
task-segment: [compile] [INFO] ------------------------------------------------------------------------ [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory c:\Users\jwa\Desktop\tets\traffic_web\src\main\resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 22 source files to c:\Users\jwa\Desktop\tets\traffic_web\target\classes [INFO] ------------------------------------------------------------------------ [ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Compilation failurec:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Encryptor.java:[7,15] sun.misc.BASE64Encoder is Sun propriet ary API and may be removed in a future release
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[3,25] package javax.servlet.http does not exis t
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[15,21] cannot find symbol symbol : class HttpSession location: class traffic_web.tools.Session
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[6,20] package javax. servlet does not exist
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[7,20] package javax. servlet does not exist
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[8,20] package javax. servlet does not exist
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[10,58] cannot find s ymbol symbol: class ServletContextListener public class ServletContextListenerInitializer implements ServletContextListener {
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[12,33] cannot find s ymbol symbol : class ServletContextEvent location: class traffic_web.tools.ServletContextListenerInitializer
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[15,35] cannot find s ymbol symbol : class ServletContextEvent location: class traffic_web.tools.ServletContextListenerInitializer
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[9,25] package javax.servlet.http does not exist
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[87,29] cannot find symbol symbol : class HttpServletResponse location: class traffic_web.controller.BoardController
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[116,37] cannot find symbol symbol : class HttpServletResponse location: class traffic_web.controller.BoardController
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Encryptor.java:[27,15] sun.misc.BASE64Encoder is Sun proprie tary API and may be removed in a future release
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[17,27] cannot access javax.servlet.http.HttpSe rvletRequest class file for javax.servlet.http.HttpServletRequest not found return attr.getRequest().getSession(true); // true == allow create
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[17,8] cannot find sy mbol symbol : class ServletContext location: class traffic_web.tools.ServletContextListenerInitializer
[INFO] ------------------------------------------------------------------------ [INFO] Trace org.apache.maven.BuildFailureException: Compilation failure at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:715) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:55 6) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.jav a:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 more [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Mon Jun 28 21:56:25 CEST 2010 [INFO] Final Memory: 13M/254M
[INFO]
c:\Users\jwa\Desktop\tets\traffic_web>mvn compile -e + Error stacktraces 开启。[INFO] 正在扫描项目... [INFO] -------------------------------------- ---------------------------------- [INFO] 建立traffic_web [INFO]
任务段:[编译] [信息] ---------------------------------------- -------------------------------- [INFO] [resources:resources {execution: default-resources}] [警告]使用平台编码(实际上是 Cp1250)复制过滤后的资源,即构建依赖于平台![INFO] 跳过不存在的资源目录 c:\Users\jwa\Desktop\tets\traffic_web\src\main\resources [INFO] [compiler:compile {execution: default-compile}] [INFO] 编译 22 个源文件到 c: \Users\jwa\Desktop\tets\traffic_web\target\classes [信息] --------------------------------- --------------------------------------- [错误] 构建失败 [信息] --- -------------------------------------------------- ------------------- [INFO] 编译失败c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Encryptor.java:[7,15] sun.misc.BASE64Encoder 是 Sun 专有 API,可能会在未来版本中删除
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[3,25] 包 javax.servlet.http 不存在
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[15,21] 找不到符号符号:类 HttpSession 位置:类 traffic_web.tools.Session
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[6,20] 包 javax. servlet 不存在
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[7,20] 包 javax. servlet 不存在
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[8,20] 包 javax. servlet 不存在
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[10,58] 找不到符号符号:类 ServletContextListener 公共类 ServletContextListenerInitializer 实现 ServletContextListener {
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[12,33] 找不到符号符号:类 ServletContextEvent 位置:类traffic_web.tools.ServletContextListenerInitializer
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[15,35] 找不到符号符号:类 ServletContextEvent 位置:类traffic_web.tools.ServletContextListenerInitializer
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[9,25] 包 javax.servlet.http 不存在
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[87,29] 找不到符号符号:类 HttpServletResponse 位置:类traffic_web.controller.BoardController
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\controller\BoardController.java:[116,37] 找不到符号符号:类 HttpServletResponse 位置:类traffic_web.controller.BoardController
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Encryptor.java:[27,15] sun.misc.BASE64Encoder 是 Sun 专有 API,可能会在未来版本中删除
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\Session.java:[17,27] 无法访问javax.servlet.http.HttpSe rvletRequest 类文件找不到javax.servlet.http.HttpServletRequest返回 attr.getRequest().getSession(true); // true == 允许创建
c:\Users\jwa\Desktop\tets\traffic_web\src\traffic_web\tools\ServletContextListenerInitializer.java:[17,8] 找不到符号符号:类 ServletContext 位置:类 traffic_web.tools.ServletContextListenerInitializer
[信息] ----------------------------------------------- ------------------------- [信息] 跟踪 org.apache.maven.BuildFailureException:org.apache.maven.lifecycle.DefaultLifecycleExecutor 处的编译失败。 executeGoals(DefaultLifecycleExecutor.java:715) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:55 6) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.javaorg.535) apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.jav a:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExec在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 在 org.apache.maven.cli 执行(DefaultLifecycleExecutor.java:180) .MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl .invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher。 org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 上的launchEnhanced(Launcher.java:315) org.codehaus。classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 引起:org.apache.maven.plugin.CompilationFailureException:org.apache.maven 编译失败.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) ) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 [INFO] ---------------------- -------------------------------------------------- [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终记忆:13M/254MmainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 引起:org.apache.maven.plugin.CompilationFailureException:org.apache.maven.plugin.AbstractCompilerMojo 编译失败.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org. apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 [INFO] -------------------------- ---------------------------------------------- [INFO] 总计时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254MmainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 引起:org.apache.maven.plugin.CompilationFailureException:org.apache.maven.plugin.AbstractCompilerMojo 编译失败.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org. apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 [INFO] -------------------------- ---------------------------------------------- [INFO] 总计时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254MLauncher.main(Launcher.java:375) 由:org.apache.maven.plugin.CompilationFailureException: org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) 在 org.apache.maven 编译失败.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ) ... 17 [INFO] ----------------------------------------- ------------------------------- [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21: 56:25 CEST 2010 [INFO] 最终内存:13M/254MLauncher.main(Launcher.java:375) 由:org.apache.maven.plugin.CompilationFailureException: org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) 在 org.apache.maven 编译失败.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ) ... 17 [INFO] ----------------------------------------- ------------------------------- [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21: 56:25 CEST 2010 [INFO] 最终内存:13M/254Mapache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager. java:490) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ...还有 17 个 [INFO] ------------------- -------------------------------------------------- --- [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254Mapache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager. java:490) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 更多 [INFO] ------------------- -------------------------------------------------- --- [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254M490) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 更多 [信息] --------------------- -------------------------------------------------- - [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254M490) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 更多 [信息] --------------------- -------------------------------------------------- - [INFO] 总时间:1 秒 [INFO] 完成时间:Mon Jun 28 21:56:25 CEST 2010 [INFO] 最终内存:13M/254M
[信息]
My POM file looks like that:
我的 POM 文件如下所示:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>masters.traffic</groupId>
<artifactId>traffic_web</artifactId>
<packaging>war</packaging>
<name>traffic_web</name>
<version>0.1.0</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Can Someone help me how to fix that ?
有人可以帮我解决这个问题吗?
Regards
问候
采纳答案by Alexander Torstling
You haven't added the servlet classes as dependencies. There are apparently present per default in Eclipse, which is why it works to compile from there. Add the following to you pom (before <build>...
, taken from here):
您尚未添加 servlet 类作为依赖项。Eclipse 中显然存在每个默认值,这就是为什么它可以从那里编译。将以下内容添加到您的 pom(之前<build>...
,取自此处):
<dependencies>
[...]
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
</dependencies>