0
我有兩臺java SDK - 1.4.2_04和1.8.0_45的windows機器。我在Eclipse Mars中有簡單的Maven Java項目。maven-compiler-plugin如何構建
After maven project creation vizard my pom xml looked like:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>grr</groupId>
<artifactId>arr</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
當我tryed運行我的應用程序墜毀錯誤:
java.lang.UnsupportedClassVersionError: arr/ff (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"
代碼:
package arr;
public class ff {
public static void main(String[] args) {
System.out.println(System.getProperty("java.version"));
}
}
然後,我已經更新了我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>grr</groupId>
<artifactId>arr</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.4.2_04</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<debug>false</debug>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
並得到了項目工作!
maven如何知道在哪裏搜索JDK?我想maven-compiler-plugin以某種方式做到這一點。如果我將java.version更改爲1.4.2_16,它仍然會編譯。爲什麼?我的系統上沒有1.4.2_16。
通過更改''和''參數,您不會更改要使用的JDK,而是更改給JDK(可能是您的1.8.0_45),以便生成Java 4兼容代碼。我猜編譯插件很聰明,可以理解'1.4.2_04'和'1.4.2_16'就是'1.4'。 –
Tome
推薦閱讀:http://stackoverflow.com/questions/11364761/how-do-i-compile-a-java-with-support-for-older-versions-of-java – Gimby
下面是一個問題,一個不同的亮點:Maven本身就是一個Java程序。在運行'mvn'shell腳本時,將使用什麼Java運行時來運行Maven? – Gimby