eclipse成功时Maven编译失败
我在WindowsXP上使用maven3.03和Eclipse3.5。我将旧的web项目转换为maven配置风格eclipse成功时Maven编译失败,eclipse,maven,jar,sun,pom.xml,Eclipse,Maven,Jar,Sun,Pom.xml,我在WindowsXP上使用maven3.03和Eclipse3.5。我将旧的web项目转换为maven配置风格当我在eclipse中编译项目时,所有内容都要编译。注意:类路径包含:Maven依赖项和JDK(1.6_018)。 当我使用mvn从命令行编译时,我得到的错误很少: 1.package com.sun.xml.internal.stream.buffer.stax不存在。 2.package com.sun.xml.internal.stream.writers不存在 3.找不到符号-
当我在eclipse中编译项目时,所有内容都要编译。
注意:类路径包含:Maven依赖项和JDK(1.6_018)。
当我使用mvn从命令行编译时,我得到的错误很少:
1.package com.sun.xml.internal.stream.buffer.stax不存在。
2.package com.sun.xml.internal.stream.writers不存在
3.找不到符号-符号:类XMLDOMWriterImpl
4.package com.sun.xml.internal.messaging.saaj.util不存在
5.package com.sun.xml.internal.bind.v2.runtime.unmarshaller不存在
6.找不到符号-符号:类名称空间ContexHelper
7.找不到符号:类ByteOutputStream 我可以看到这是一个有太阳罐的东西。但我就是不明白为什么eclipse可以而命令行不行 编辑:上面列表中我没有提到的错误之一是:
[ERROR]<path>\EventsViewer.java:[54,69] inconvertible types found: <br>java.util.SortedMap<java.util.Date,java.util.List<com.myClass>>
required: java.util.Map<? extends java.util.Date,? extends java.util.List<com.myOtherClass>>
[ERROR]\EventsViewer.java:[54,69]找到不可转换的类型:
java.util.SortedMap
必需:java.util.Map仔细检查您在Eclipse和Maven构建中使用的JDK是否相同。即使你认为你是,再仔细检查一遍
这些包是一些Java版本中包含的包,而不是其他版本中包含的包。如果Java版本不同,请添加
org.apache.maven.plugins
maven编译器插件
2.3.1
1.6
1.6
UTF-8
源和目标的配置指向1.6和
从Maven项目上下文菜单更新项目配置将在许多情况下解决不同步问题(这会导致不同的编译结果):
这可能是真正的原因
“Jerome是对的,不建议使用com.sun
来自rt.jar的类,尤其是标记为“internal”的类;您只需要
自找麻烦
但是我对此很好奇,所以尝试了一下。上面的课程可以
确实可以被Eclipse访问
使用javac的命令行失败,出现“不存在”错误
假设Sun的java编译器检测到
正在访问“内部”类,并拒绝导入该类。
Eclipse使用不同的编译器,该编译器可能没有此检查
Maven只使用系统执行中可用的javac编译器
因此,问题根本与Maven无关,而是
maven正在调用的编译器拒绝编译源代码。
我在javac命令行中看不到任何公共标志来禁用此功能
“阻止”内部访问,所以除非您想避免使用Sun的
javac编译器您只需避免使用这个内部类
只是为了好玩,我尝试了Jerome的建议,把rt.jar放在
类路径:
javac-cp/usr/java/jdk1.6.0_03/jre/lib/rt.jar Foo.java
但这仍然无法编译
ByteOutputStream类可以在运行时通过
Class.forName(“…”)
有趣的是,我正在做的一个项目碰巧导入了类
com.sun.org.apache.xml.internal.utils.SAXSourceLocator;
这一切正常。发出警告,但代码编译(是的,
它在我的待办事项列表中,可以解决这个问题:-)。所以它不是所有的内部类
这是我的情况:在添加//TODO
后,IntelliJ在导入部分import com.sun.xml.internal.bind.v2.TODO中自动添加了这一行代码>
删除上述导入行后,问题得到解决。现在我可以使用maven成功编译了很可能您的JAVA\u HOME
isnt'设置在maven环境中。您运行maven和Eclipse的平台是什么?+1如果JAVA版本不同,添加maven编译器插件,使源和目标的配置指向1.6,并从maven项目上下文菜单更新项目配置,将在许多情况下解决问题,我说的是Java正在使用的实际目录,而不是Java 5 vs Java 6Ok我添加了它作为单独的答案以避免混淆某人Jeanne,我不明白-你说的“包含在Java的某些版本中而不是其他版本中”和“实际目录”是什么意思?IBM喜欢在JDK中包含不应该/不应该在运行时的内容。这意味着,如果您使用IBMJDK编译,情况似乎很好,当您使用另一个JDK编译时,类就会丢失。谢谢。我在您编写时尝试了maven编译器插件,但没有任何帮助。我没有尝试你的第二个建议(“更新项目配置”)(它有时会以一种奇怪的方式更改我的.classpath),但我会再试一次并让你知道。再次感谢,没用。奇怪的是,它使用J2SE_1.6更改了.classpath文件,而不是使用JDK1.6_018的eclipse。
Type safety: Unchecked cast from SortedMap<Date,List<myClass>> to Map<? extends Date,? extends
List<myOtherClass>>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<target>1.6</target>
<source>1.6</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>