![](/img/trans.png)
[英]Unable to compile using Java 1.7 in Jetbrains Intellij after moving from 1.6 to 1.7 (maven based project)
[英]Java 6 classes when 1.7 is configured in Intellij/maven with scala plugin
如屏幕截圖所示,模塊/項目設置為jdk 1.7
項目/ SDK設置為7:
模塊設置為jdk 7:
但是,從javap中我們看到的是Java 6 (50)?
a)確認該類剛剛被編譯(7/22/15 @ 18:14):
ls -l ./target/classes/org/yardstickframework/spark/DataGenerator.class
-rw-r--r-- 1 steve staff 3829 Jul 22 18:14 ./target/classes/org/yardstickframework/spark/DataGenerator.class
b)哪個版本的Java?
javap -verbose ./target/classes/org/yardstickframework/spark/DataGenerator.class | grep ver
minor version: 0
major version: 50
注意:pom.xml將語言級別設置為jdk7
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
更新根據一個建議,我從命令行運行了編譯:
mvn clean compile
這也導致jdk6 / major version = 50。 現在為什么會這樣? 我正在檢查POM,看是否還有其他怪異現象。
每個羅馬人的要求的另一個更新 :這是Maven的輸出
$mvn -v
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/local/Cellar/maven/3.1.1/libexec
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10", arch: "x86_64", family: "mac"
ElliottFrisch的另一個更新建議對Maven編譯器插件進行一些補充。 這是更新的部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<verbose>true</verbose>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
好吧,我對此有點sheep。 這是一個scala項目,類文件是scala-maven插件的輸出。 因此,所有這些maven-compiler設置僅適用於Java 源文件。 抱歉,那位如此龐大的失蹤類人。
在scala-maven-plugin中獲取正確版本的方法並不容易確定:但是幸運的是有人發現了:
http://xflin.blogspot.com/2013/08/mixed-scala-and-java-in-maven-project.html
這是關鍵部分:
<recompileMode>incremental</recompileMode>
<args>
<arg>-target:jvm-1.7</arg>
</args>
<javacArgs>
<javacArg>-source</javacArg><javacArg>1.7</javacArg>
<javacArg>-target</javacArg><javacArg>1.7</javacArg>
</javacArgs>
這屬於普通的scala-maven-plugin部分,如下所示:
<plugin>
<version>3.2.1</version>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<scalaCompatVersion>${scala.version}</scalaCompatVersion>
<scalaVersion>${scala.binary.version}</scalaVersion>
<jvmArgs>
<jvmArg>-Xms512m</jvmArg>
<jvmArg>-Xmx1024m</jvmArg>
</jvmArgs>
<recompileMode>incremental</recompileMode>
<args>
<arg>-target:jvm-1.7</arg>
</args>
<javacArgs>
<javacArg>-source</javacArg><javacArg>1.7</javacArg>
<javacArg>-target</javacArg><javacArg>1.7</javacArg>
</javacArgs>
</configuration>
</plugin>
在將該片段添加到scala插件之后,我們現在有了:
$javap -verbose ./target/classes/org/yardstickframework/spark/DataGenerator.class | grep ver
minor version: 0
major version: 51
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.