我是一个项目,其构建过程迄今为止完全基于ant/shell脚本进行了编译(这是一个单词吗?开启枚举时Maven编译失败
考虑下面的枚举
public enum ResourceType {
A, B;
}
以下豆:
public ResourceTypeOwner {
//set get resourceType property
}
而下面的代码片段:
void foo(ResourceTypeOwner rto) {
ResourceType resourceType = rto.getResourceType();
switch (resourceType) {
case A:
handleA(resourceType); break;
case B:
handleB(resourceType); break;
default:
throw new RuntimeException("Unsupported resource type");
}
}
与Maven构建时我得到一个编译错误:
无法打开ResourceType类型的值。只有转换允许INT 值或枚举变量
pom.xml中具有用于编译
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<compilerId>eclipse</compilerId>
<compilerVersion>1.6</compilerVersion>
<source>1.6</source>
<target>1.6</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-eclipse</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
两种蚂蚁(与org.eclipse.jdt.core.JDTCompilerAdapter)和蚀下面插件配置编译/编译好。我明显在做一些错误的事情(除非它是一个未报告的maven-compiler-plugin或plexus-compiler-eclipse插件错误,这在某种程度上不太可能,开启枚举既不坏也不是火箭科学)。有人有想法吗?
附加环境细节
$ MVN -version阿帕奇的Maven 3.0.4(r1232337; 2012-01-17 10:44:56 + 0200) Maven的家:/家庭/ d的/ dev /工具/apache-maven-3.0.4 Java版本: 1.6.0_35,供应商:Sun Microsystems Inc. Java主页:/opt/jdk1.6.0_35/jre默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“ Linux的”版本: “3.2.0-40-通用”,拱: “AMD64” 家庭: “UNIX”
更新:
标准JDK编译器成功编译特定的类。看起来像是一个plexus-compiler-eclipse 2.2问题。
检查您是否在类路径中(包括依赖)只有一个'ResourceType'。我相信你还有另一个(常规)同名的班级。 – AlexR 2013-05-13 11:32:45
我刚刚搜索了整个mvn存储库中具有相同名称的类。没有了。此外,它发生在两个不同的枚举(这是在整个项目中打开一个枚举的唯一情况)。最后将枚举重命名为ResourceType123456(使用eclipse重构)。同样的问题。 Thx虽然。 – dkateros 2013-05-13 11:46:53
你必须使用eclipse编译器吗? jdk最新怎么了? – radai 2013-05-13 11:48:11