我是一個項目,其構建過程迄今爲止完全基於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