編譯jdk8
㈠ 運行環境jre版本和jar包編譯版本不一致導致:Unsupported major.minor version 52.0
我在本地使用 Intellij Idea 打包了一個 spark 的程序 jar 包,放到linux集群上運行,報錯信息是: Unsupported major.minor version 52.0
本機系統 -> windows10 開發工具 -> Intellij Idea 構建工具 -> maven
集群系統 -> Linux jre -> java(TM) SE Runtime Environment (build 1.7.0_80-b15)`
根據報錯 log 可以斷定的是由於我本地編譯打包所使用的 jdk 版本和 linux 集群的 jre 版本不一致導致的。stanford parser 和 jdk 版本對應關系為:
可以推斷出是由於我打包編譯時所使用的 jdk 版本是 jdk8,而集群的 jre 是7,才導致的問題。
maven 項目會用 maven-compiler-plugin 默認的 jdk 版本來進行編譯,如果不指明版本就容易出現版本不匹配的問題,可能導致編譯不通過的問題。解決辦法:在 pom 文件中配置 maven-compiler-plugin 插件。
方式一:
方式二:
如豎首果使用 scala 編寫 spark 的程序,在編譯打包時候要注意 scala 的版本號和 jdk 版本的對應關系,同時也要考慮集群上 jre 的版本。比如我的集群上所使用的 jre 的版本號為 7,那麼本機打包編譯的 jdk 版本必須旅搜為 7 ,那麼 scala 版本必須為 2.12 版本以下。
Intellij Idea 設置「開發」運拆纖歷行時所用的 jdk 版本的幾個地方:
如果上圖中 Intellij Idea 的開發運行 jdk 版本配置錯誤,在開發運行編譯的時候會報: Error:java: 無效的源發行版: xx
㈡ 我為什麼要自己編譯openjdk8以及那些坑
比如說,泰山OFFICE使用JAVA開發,自然要使用JDK。而JDK本身也有BUG,解決又不及時,只能自己動手解決了。相當於定製。
如果要編譯JDK,建議參考本人博客,應該是全網最詳細的,很多問題是全網首發(就是吾第一個發表博文公開解決辦法的)。
㈢ openjdk-8-jdk-headless 什麼版本
OpenJDK8是JDK的開放源碼版本,以GPL(General Public License,通用性公開許可證)協議的形式放出。因為授權協議的原因,Sun公司實現的JDK的一部分源碼因為產權的問題無法開放OpenJDK使用。因此相比於JDK,OpenJDK的源碼只包含了最精簡的JDK。
openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在JDK7的時候,openjdk已經成為jdk7的主幹開發,sun jdk7是在openjdk7的基礎上發布的,其大部分原始碼都相同。
只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權協議)發布。
至於openjdk6則更是有其復雜的一面,首先是openjdk6是jdk7的一個分支,並且盡量去除Java SE7的新特性,使其盡量的符合Java6的標准。
(3)編譯jdk8擴展閱讀:
DK和OpenJDK的區別,可以歸納為以下幾點:
1、授權協議的不同
openjdk採用GPL V2協議放出,而JDK則採用JRL放出。兩者協議雖然都是開放源代碼的,但是在使用上的不同在於GPL V2允許在商業上使用。
而JRL只允許個人研究使用。OpenJDK不包含Deployment(部署)功能。
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在Openjdk中是找不到的。
2、OpenJDK源代碼不完整
這個很容易想到,在採用GPL協議的Openjdk中,sun jdk的一部分源代碼因為產權的問題無法開放openjdk使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。
因此這些不能開放的源代碼將它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。
而Icedtea則為這些不完整的部分開發了相同功能的源代碼(OpenJDK6),促使OpenJDK更加完整。
3、部分源代碼用開源代碼替換
由於產權的問題,很多產權不是SUN的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。
4、openjdk只包含最精簡的JDK
OpenJDK不包含其他的軟體包,比如Rhino Java DB JAXP……,並且可以分離的軟體包也都是盡量的分離,但是這大多數都是自由軟體,你可以自己下載加入。
5、不能使用Java商標
這個很容易理解,在安裝openjdk的機器上,輸入「java -version」顯示的是openjdk,但是如果是使用Icedtea補丁的openjdk,顯示的是java。(未驗證)
總之,在Java體系中,還是有很多不自由的成分,源代碼的開發不夠徹底,希望Oracle能夠讓JCP更自由開放一些,這也是所有Java社區所希望的。
㈣ 如何編譯java
用命令提示符編譯java程序的步驟:
1.先新建文本文檔,輸入自己的java程序。
這里我寫一個簡單的java程序,來做示範。
import java.util.*;
public class HelloDate{
public static void main(String[] args)
{
System.out.println("Hello,it's:");
System.out.println(new Date());
}
}
經驗總結:運行一個java程序的大概的流程是:
書寫源代碼------>編譯------->運行---->結束。
注意事項:
1.在輸入的時候一定要注意區分大小寫。
2.操作之前要保證自己的電腦配置了java的運行環境。
㈤ centos7 編譯 openjdk8, make all 報錯
你是要安裝java環境吧
㈥ 我為什麼要自己編譯openjdk8以及那些坑
(1)/etc/profileexportJAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/exportPATH=$PATH:$JAVA_HOME/binexportJRE_HOME="$JAVA_HOME/jre"exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar修改完成後,使用source/etc/profile命令進行更新;(2)下面這幾步比較重要,因為在許多linux系統中都預裝了openjdk,所以即使上面進行了這些設置,系統默認的還不是我們要設置的內容;如果要真正使用我們自己的jdk,還需要一下步驟:sudoupdate-alternatives--install/usr/bin/javajava/usr/java/jdk1.7.0_67-cloudera/bin/java300sudoupdate-alternatives--install/usr/bin/javacjavac/usr/java/jdk1.7.0_67-cloudera/bin/javac300(這里的300隻是標識一下,沒什麼意義,只是下一步要用到)(3)大功告成,使用java-version命令來查看我們的java環境變數,顯示如下內容:javaversion"1.7.0_05"Java(TM)SERuntimeEnvironment(build1.7.0_05-b06)JavaHotSpot(TM)ServerVM(build23.1-b03,mixedmode)*對於更新一個/usr/bin/xxx命令指向一個新的路徑可以用sudoupdate-alternatives--configxxx
㈦ jdk8編譯的程序能否在低版本java上運行
如果用了jdk8的新特性的話 一般情況下就必須要高版本的或者當前版本的了
當然 如果涉及的特性在程序裡面只是一些小功能或許也能跑
㈧ jdk環境配置 win8 我只配置了path 而沒有配置classpath為什麼 還能編譯執行HelloWorld.java
像java命令,Windows會現在當前目錄找,如果沒找到這個程序,就去環境變數path那項里的目錄里去找。如果你不配置,就只能進到bin目錄里使用,很麻煩,所以要配置一下。以便在哪裡都能用。classpath也一樣的道理,只不過不是程序,而是為了找類。
所以你不配置也能用,可能就是因為系統找到了這個類的緣故。
希望 採納。
㈨ jdk8編譯在jdk11運行
在使用JDK 11編譯JDK 8項目時,可能會遇到一些兼容性問題。以下是一些可能的解決方案:
設置編譯器版吵殲本:JDK 11默認使用的是Java SE 11編譯器,可以通過設置-source和-target參數來使用JDK 8的編譯器。例如,使用以下命令編譯Java文件:
plaintext
Copy code
javac -source 1.8 -target 1.8 MyJavaFile.java
這將使用JDK 8的編譯器編譯Java文件。
2. 使用工具:可以使用一些工具來將JDK 8的項目轉換為JDK 11兼容的項目。例如,可以使用Apache Maven或Gradle等構建工具來管理項目依賴和編譯設置。這些工具可以自動檢測並解決兼容性問題。
3. 升級項目:如果可能的話,可以考慮將JDK 8的項目升級到JDK 11。這需要對項目進行修改,以使用新的Java SE 11 API和功能。在升級項目之前,建議備份項目代碼和相關設置。
請注意,以上方法僅供參考,型含具體解決方案可能因情況而異。在編譯JDK 8項目時,建議使用JDK 8編升租沖譯器,以避免兼容性問題。