我有一個使用maven編譯成ear文件的項目。這是用來編譯代碼:maven編譯我的項目的主要和次要版本的Java?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6/source>
<target>1.6</target>
</configuration>
</plugin>
有沒有方法可以讓我確定用來編譯代碼的Java行傢什麼次要版本?
UPDATE:
我能得到只用做從Maven構建產生的耳朵文件的主要和次要版本如下:
- 使用zip文件工具解壓ear文件去所包含的文件
- 從提取的文件找到我的源代碼使用
- 運行的javap產生的罐子下列操作之一(從那裏jar文件所在的目錄): 個
的javap -classpath ./myjarfile.jar -verbose -c com.myorg.myproj.MyClass
輸出的開頭是這樣的:
Classfile jar:file:/C:/TEMP/myjarfile.jar!/com/myorg/myproject/MyClass.class
Last modified May 26, 2017; size 944 bytes
MD5 checksum 37996ea9840df04afb5485fedd861f8e
Compiled from "MyClass.java"
public class com.myorg.myproj.MyClass extends com.myorg.myproj.SomeOtherClass
SourceFile: "SomeOtherClass.java"
minor version: 0
major version: 50
flags: ACC_PUBLIC, ACC_SUPER
所以它看起來像我的課編譯時使用主要版本50和次要版本0.
然而,問題依然存在,是用什麼特定版本的Java編譯代碼?我期待的是,如果要在cmd提示符下輸入「java -version」(例如,Java版本「1.7.0_51」),您會得到類似的結果。
根據「java -version」版本,50.0映射到什麼地方?
關於這種類型的映射有很多帖子,但它們似乎都只映射主要版本。這些措施包括以下內容:
List of Java class file format major version numbers?
https://blogs.oracle.com/darcy/source%2c-target%2c-class-file-version-decoder-ring
http://www.rgagnon.com/javadetails/java-0544.html
另外,我似乎沒有安裝,我編譯的代碼的機器上的Java 1.6的環境,所以我m不確定maven用於將代碼編譯爲Java 1的特性。
它使用默認情況下在系統上找到的任何JDK,或者如果來自IDE,則使用重寫的JDK。 (這是能夠編譯和運行1.6) – jr593
正在使用JAVA_HOME的Maven打印。您可以運行java -version來查看確切的版本。 – vempo
您也可以在十六進制版本中打開一個.class文件並查看https://en.wikipedia.org/wiki/Java_class_file#General_layout – vempo