2013-03-08 75 views
1

我有一個簡單的Maven項目包含一個文件,App.java成功,包含簡單的編譯失敗,用javac

package com.foo; 

public class App 
{ 
    private Long wrapper; 

    public long getlong() { 
     if (null != wrapper) { 
      return wrapper; 
     } else { 
      return 0; 
     } 
    } 
} 

(您可以在5分鐘內創建項目使用Maven的複製此和用上面的替換App.java)。

mvn compile產生

.../foo/App.java:[9,12] incompatible types 
found : java.lang.Long 
required: long 

在瀏覽該目錄並運行javac App.java產生任何錯誤。任何人都知道發生了什麼事? (我假設Maven使用我的盒子上安裝的任何Java版本;無論如何,這是1.6.0_21。謝謝。

+0

是什麼'使用MVN version'的JDK版本報告 – Perception 2013-03-08 21:09:47

+0

'MVN -V compile'還報告1.6.0_21 – rogerl 2013-03-08 21:11:31

+0

有趣的是,。所有上述情況都發生在我的Ubuntu 12.04機器上,當我在Mac OS機器上做同樣的事情時,Maven編譯也能正常工作。 ,'mvn -V compile'報告1.6.0_41。 – rogerl 2013-03-08 21:15:53

回答

3

它可能是用sourcetarget版本的1.4編譯的,您需要配置編譯器插件來編譯更高版本見"How do I set up Maven so it will compile with a target and source JVM of my choice?""Setting the -source and -target of the Java Compiler":?

... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.0</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    ... 
    </build> 
    ... 
+0

謝謝!我想,不知何故,我得到了1.4 JDK,但無法弄清楚如何。再次感謝。 – rogerl 2013-03-08 21:24:17

+1

想象沒有自動裝箱的生活... – vikingsteve 2013-03-08 21:36:20