2013-03-30 63 views
0

最近我正在使用JDK 1.6.0_26的Maven 3.x,Eclipse Juno JavaEE IDE。在我的項目中,我在課堂內外都使用了enum。當我運行乾淨構建它會出現錯誤如何在Maven中編譯Java Enum?

[ERROR] found : my.package.MyClass.MyEnum 
[ERROR] required: my.package.MyClass.MyEnum 

然後我保證my/package/MyClass.java首先需要編譯,所以我說

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
    <executions> 
     <execution> 
      <id>default-compile</id> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>**/*.*</exclude> 
       </excludes> 
       <includes> 
        <include>**/MyClass.java</include> 
       </includes> 
      </configuration> 
     </execution> 
     <execution> 
      <id>second</id> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      <configuration> 
       <includes> 
        <include>**/*</include> 
       </includes> 
       <excludes> 
        <exclude>**/MyClass.java</exclude> 
       </excludes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

之後,它不希望正常工作。這對我來說非常煩人。如果我必須在應用程序中使用枚舉,我將如何克服它。有人試圖在他們的博客中證明它是java 1.6.0_26的錯誤,並在JDK 7中修復。如果是這樣,則無法遷移到JDK 7.x.用Eclipse JNO Java EE用Maven 3.x解決這個問題的任何方法。

package com.formativesoft.mcserp.validator; 

public class Validator { 

    public enum Lang { 
     EN, BN; 
    } 
} 
+0

爲什麼要排除編譯中的所有內容?並只編譯枚舉類? – WeMakeSoftware

+0

由於enum類不是首先編譯的,所以我只想編譯枚舉類。枚舉類編譯後,我試圖編譯依賴於枚舉類的其餘類。 –

+0

可能會混淆交叉依賴或maven緩存。嘗試清理〜/ .m2目錄並運行一個maven構建。另外,你是從命令行還是從eclipse運行maven?在有問題的情況下,最好從命令行運行maven。 –

回答

2

您不需要編譯執行噱頭。如果你的枚舉被用在它所定義的相同工件中,那麼沒有什麼特別的你需要做。我想這只是一些暫時的故障。從您的pom配置中刪除目標定義排除瘋狂,從控制檯運行mvn clean install到您的項目中,幾乎可以肯定您不會遇到任何問題。如果你這樣做,包括錯誤信息,以便我們可以進一步幫助你。

+0

'[INFO] ----------------------------- -------------------------------- [錯誤]編譯錯誤: [信息] ------- -------------------------------------------------- ---- [錯誤] D:\ Workspaces \ MCSWorksapces \ SpringWorkspace \ mcserp \ spring-validator \ src \ main \ java \ com \ formativesoft \ mcserp \ validator \ NickName.java:[20,25]不兼容 類型 found:com.formativesoft.mcserp.validator.Validator.Lang required:com.formativesoft.mcserp.validator.Validator.Lang' –

+0

實際上它是按照你提到的方式嘗試的,雖然無法獲得豐碩的結果,然而'executions'節點是添加。首先它假定它可能是eclipse的問題,然後我直接從Maven控制檯嘗試它,然後嘗試。上面寫的錯誤信息我 –

+0

你能發佈mcserp.validator.Validator.Lang的代碼嗎?它是如何定義的?代碼在eclipse中看起來是否可編譯?你有可能將你的枚舉定義爲其他類的子類嗎?然後你需要傳遞父類的一個實例,或者看看這個問題:http://stackoverflow.com/questions/2097982/is-it-possible-to-create-an-instance-of-嵌套類使用java反射 –