JAVA SE11環境變量配置(Windows)


 

附上:03. 安裝環境:Windows · IntelliJ IDEA Tutorial

附上:使用調試功能進行 Java debug 

附上:Linux(Deepin)下配置java8 - L141210113的專欄 - CSDN博客

 


 

大事件:java se 下載都要登錄了,所以建議個人開發者使用OpenJDK ,如果沒有好好閱讀條款,商用領域使用Oracle-JDK是有收律師函的成本的。

OpenJDK官網:https://openjdk.java.net/ (注意GPL2協議)

 

參考:

Oracle 終於要向 Java 的非付費用戶開槍了-怎么看? - jason的回答 - 知乎 

https://zhuanlan.zhihu.com/p/47405189

 

當然還有很多公司的開源JDK,如亞馬遜https://github.com/corretto   ZULU:https://www.azul.com/downloads/zulu/   此外還有微軟、阿里等等

可替代JDK介紹: https://yq.aliyun.com/articles/645952


 

 

導航:

  1. JAVA環境配置和測試
  2. 使用VSCode編譯/調試JAVA
  3. 解決VSCode運行程序中文亂碼問題(編碼問題)
  4. 解決eclipse導入javax之類的包報錯(Java9開始才有的特性)

  

一、JAVA環境配置和測試

JAVA SE官網下載並運行jdk-11.0.1_windows-x64_bin.exe

 

配置環境變量示例(快捷鍵 WIN+Pause,筆記本可能要多按個Fn鍵)

JAVA_HOME     C:\Java JDK

path       %JAVA_HOME%\bin  (如果這里不生效,就改為bin目錄的完整路徑)

CLASSPATH    .;%JAVA_HOME%\lib;

 

其他一致
CLASSPATH值
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\bin
附上JDK1.8環境變量

 

類路徑變量 共有兩個值,其中點是為當前目錄的意思

附上LINUX Debian系操作系統:
dpkg -i 安裝包文件名.deb
nano /etc/profile

寫在最后:


# Oracle JDK11

export JAVA_HOME="/usr/lib/jvm/jdk-11.0.2"
export CLASSPATH=${JAVA_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin


路徑間用分號隔開,$PATH必須要寫,不然會破壞系統變量。等號左右不能有空格,不然報錯
可以先在終端打export測試(就算打錯了也只對當前終端窗口生效),確認無誤就執行
之所以不加當前目錄作為CLASSPATH,是因為這是linux,全局變量挺危險的。單文件運行用
java -d . 文件名
也不麻煩吧

source /etc/profile
使變量文件在當前終端窗口生效,測試java -version成功的話就可以重啟電腦讓它永久生效了
至於OpenJdk和OracleJdk沖突看這里:
分析並解決Linux(Deepin)的自帶OpenJdk和自己安裝的OracleJdk新舊版本沖突問題
 
        

 

 

命令行測試(javac中使用-d,以及javac / java中使用-cp介紹

java -version
javac

 

HelloWorld.java

/*
 *定義一個類文件,然後在螢幕上顯示 "Hello, World!"。
 */
public class HelloWorld {
    public static void main( String[] args ) {
        System.out.println( "Hello, World!" );
    }
}
/* 這個類別文件的結束。 引用自https://zh.wikibooks.org/zh-hans/Java/HelloWorld*/

 

然后在命令行下的當前目錄輸入:

javac HelloWorld.java

當然有些程式碼內部存在中文字串,會導致編譯失敗,這時候需要輸入包含參數的指令:

javac -encoding utf-8 HelloWorld.java

編譯

java HelloWorld

(注意不是java HelloWorld.class,class文件是字節碼文件,只是“中介”並不算可執行文件,但這個“中介”必不可少(這就是CLASSPATH里要有當前目錄符號“.”的原因),)

屏幕上就會顯示

Hello, World!

附上帶包運行的方法

帶包運行,
定位到包目錄所在目錄
  java 包名.類名

如D:\test\Hello.class
包名test 類名Hello
那么
  cd /d D:
  java test.Hello
帶包運行

 需要第三方依賴包的編譯/運行命令,請看:

命令行編譯帶外部包依賴的java源文件 [以JDBC為例]

 javac的參數 -d是用來生成包結構的,可指定編譯后class的生成路徑:

 

javac *.java

目錄下有:

a.java  a.class  b.java  b.class

 

javac -d . *.java

目錄下有:

a.java  b.java  a目錄\a.class  b目錄\b.class

 

不明白可以看這篇:https://zhuanlan.zhihu.com/p/36529847

當然也可以暫時跳過


 


 

 

 

資料參考:

JDK 11 Documentation

java.lang.ClassNotFoundException與java.lang.NoClassDefFoundError的區別

JavaSE學習總結(一)——Java基礎

 

 

 

二、使用VSCode編譯/調試JAVA

推薦參考文章:VSCode搭建Java開發運行環境

(上面這鏈接有 java插件配置文件的修改方法)

如果沒什么問題了,可以在VSCode上玩一下:

VSCode打開java源文件所在目錄,搜索安裝 Java Extension Pack,然后直接F5會生成配置文本,保存后編譯java文件即可

如果提示

Warn: Classpath is incomplete. Only syntax errors will be reported.
請看這里,或者這里
“Classpath不完整”警告
Fred Bricon編輯了這個頁面 on 27 Nov 2018 · 6次修訂
每當打開一個java文件時,它不屬於項目(我們稱之為獨立的Java文件),vscode-java無法計算正確的類路徑。它使報告編譯錯誤變得毫無用處,因為UI會在整個文件中填充令人分心的紅色錯誤,例如:


幸運的是,vscode-java仍然能夠為基本JDK類提供有用的內容輔助,報告語法錯誤,計算類大綱或允許代碼導航。因此,顯示以下警告:


如果您只是關閉消息,它將在下次打開獨立的Java文件時彈出。通過單擊Don’t Show Again選項可以永久丟棄該消息。

如果您改變主意,可以在VS Code的用戶設置中修改該選項:該java.errors.incompleteClasspath.severity密鑰指定當Java文件的類路徑不完整時消息的嚴重性。支持的值是ignore,info,warning和error。

您需要打開一個包含pom.xml,build.gradle或至少是默認eclipse設置文件的文件夾,以便可以設置完整的類路徑和項目層次結構。
官方說明

另外如果不需要debug功能,可以直接使用Code Runner插件。



fen ge xian


三、解決VSCode運行程序中文亂碼問題(編碼問題)


附上VSCode運行程序中文亂碼解決方案(Java示例,C語言同理)

(這里暫時以coderunner為例,實際上應該是可以在java插件里設置的)

在VSCode設置搜索code-runner.executorMap

然后從插件的默認配置復制粘貼到右邊的用戶配置,並進行修改

添加了以下內容到中間

 "code-runner.runInTerminal": true,
    // Set the executor of each language.
    "code-runner.executorMap": {
        "java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc -g -fexec-charset=GBK $fileName -o $fileNameWithoutExt -Wall -static-libgcc && $dir$fileNameWithoutExt"
    }

 

 

我的用戶配置是

 1 {
 2     "workbench.sideBar.location": "left",
 3     "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
 4     "files.autoGuessEncoding": true,
 5     
 6 
 7     //"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],
 8     //"terminal.integrated.fontFamily": "Lucida Console",
 9 
10 
11     "code-runner.runInTerminal": true,
12     // Set the executor of each language.
13     "code-runner.executorMap": {
14         "java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
15         "c": "cd $dir && gcc -g -fexec-charset=GBK $fileName -o $fileNameWithoutExt -Wall -static-libgcc && $dir$fileNameWithoutExt"
16     }
17 }
settings.json

 然后用code runner插件運行即可,調試的就沒辦法避免中文亂碼了(只能等VSCode官方解決)。

 

 

四,解決eclipse導入javax之類的包報錯(Java9開始才有的特性)

詳情:JDK8過渡到JDK11

例如導入包提示錯誤:

The import javax.sound cannot be resolved midi.java /Test/src/com/test/demo line 2 Java Problem

這種問題並不是環境變量設置不對,而且JAVA9帶來的新特性。

 

 

解決方案:只需要兩步點擊搞定

點擊代碼行號那里的×,會彈出對話框,然后點兩下Add 'requires ' to module-info.java即可

 

 然后就會看一下module-info.java,會發現多了一行requires

注:javax.sound是屬於java.desktop的

 

這是Java9帶來的特性,至於為什么,我還在尋找答案中....

 

附上:Eclipse斷點調試(debug)實用技巧——基礎篇_百度經驗




最后,推薦書籍(看實體書或PDF都行):
1,Head First Java(中文版)
2,Java 核心技術卷一


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM