注意:这似乎是“ javac”程序中的限制。
我有需要为Java 5 JVM构建的Java 6代码。我以前使用javac
ant目标(同时使用JDK编译器和ecj)的工作使我相信,这仅仅是为javac设置源和目标的问题。因此,此pom.xml片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.5</target>
</configuration>
</plugin>
在具有Maven支持的Eclipse 3.7中可以正常工作。不幸的是,直接从命令行运行Maven给了我
javac: source release 1.6 requires target release 1.6
与产生的相同javac -source 1.6 -target 1.5
。澄清一下,这是Ubuntu的官方OpenJDK 6
x@JENKINS:~$ javac -version
javac 1.6.0_20
x@JENKINS:~$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
x@JENKINS:~$
Windows的官方Oracle Java 7 JDK显示相同的行为。
注意:我不想针对Java 5库或任何东西进行构建。只是活动的javac会生成Java 5 兼容的 字节码。
如何在仍然与Eclipse Maven插件兼容的同时获得所需的东西?
(编辑:除了@Override之外,我还想在使用Java 6时针对Java 6中的JAX-WS库进行编译,但仍生成Java 5字节代码-
然后我可以在部署时在Web容器中有意添加JAX-WS库Java 5安装)
编辑:事实证明可以告诉maven-compiler-plugin使用另一个编译器,而Eclipse编译器可以做到这一点:
<plugin>
<!-- Using the eclipse compiler allows for different source and target,
which is a good thing (outweighing that this is a rarely used combination,
and most people use javac) This should also allow us to run maven builds
on a JRE and not a JDK. -->
<!-- Note that initial experiments with an earlier version of maven-compiler-plugin
showed that the eclipse compiler bundled with that gave incorrect lines in
the debug information. By using a newer version of the plexus-compiler-eclipse
plugin this is hopefully less of an issue. If not we must also bundle a newer
version of the eclipse compiler itself. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.5</target>
<debug>true</debug>
<optimize>false</optimize>
<fork>true</fork>
<compilerId>eclipse</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-eclipse</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
</plugin>
将该类编译为Java 1.5字节码而没有任何抱怨。Eclipse Java EE 4.2.2的m2e也支持“开箱即用”。
编辑:我发现所有 Javadoc 工具都不喜欢Eclipse编译器的输出。
EDIT 2015-06-28:我最近做了一个快速测试,最新的ecj(对应于Eclipse 4.4)与javadoc配合良好。
限制在javac中。解决的办法是告诉Maven使用另一个编译器。有关详细信息,请参阅问题。
在使用IntelliJ IDEA运行JUnit测试时,我得到 我该如何纠正这一点呢? 使用SDK 1.7 模块语言级别为1.7 Maven build工作良好。(这就是为什么我在IDEA configuration issue中相信这一点)
我正在使用intellij创建sbt跨编译平台项目,使用以下平台JVM、JS、NativeWin、NativeUbuntu、Android和共享scala代码。我的项目需要Java8,但似乎Android不适合Java8版本,因为我在sbt文件中为Android模块指定了1.7版本,如下所示: Android模块文件 项目设置:
所以我更改了我的依赖项,如下所示: 但我不知道从哪里可以把1.6级改成1.8级... 当我编译应用程序时,我遇到了这个错误: 提前致谢:)
我有这个错误:
如何解决那个错误?? 我的生成分级文件是
我正在尝试使用最新的Gradle版本(2.0),但我不断得到这个消息,当点击Gradle构建在终端。为什么它要1.10版本?我对Gradle是个新手,所以我想好好想想。 需要Gradle版本1.10。当前版本为2.0 最后一件事是在中,我选择了“使用可定制的gradle包装器” 设置为C:\Program Files(x86)\gradle\gradle-2.0 build.gradle文件: 更