2013-03-08 79 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