Java on Visual Studio Code的更新 – 2021年11月


Nick zhu
Senior Program Manager, Developer Division at Microsoft

​大家好,歡迎來到 11 月版的 Visual Studio Code Java 更新!在這篇年終博客中,我們將分享一些與Java基礎開發相關的最新功能以及與應對編碼問題的一些解決策略。

基礎開發相關的功能會直接影響開發者的日常工作效率,提升這方面的用戶體驗將一直是我們的重點。在11 月的更新中,我們在這方面進行了多項改進:

項目管理 – 跟”.project”等元數據文件說再見

如果您正在使用Java擴展包進行 Java 開發,我們有個好消息要告訴您 – 當您導入新的 Java 項目時,Visual Studio Code 不再在項目路徑中生成那些隱藏的“.project”元數據文件!這是一個已經存在三年多的問題,而我們在11月的版本中修復了它。如果您有興趣了解我們是如何解決的,請可以訪問這篇博客

測試 – 在測試與測試對象之間跳轉

在 11 月的版本中,我們添加了一項新功能,允許用戶在測試和相應的測試對象之間跳轉,這個功能將幫助用戶更方便地編寫單元測試

代碼操作 – 更方便地生成構造函數和覆蓋/實現方法

我們曾經在之前的博客中提到過,我們會一直致力讓常見代碼的操作更加易於使用。在最新版本中,用戶現在可以使用 Java 類旁邊的“燈泡圖標”來方便地生成構造函數或覆蓋/實現方法!以下是一個快速演示:

與亂碼問題“打交道”

用戶在處理各種語言時遇到某種編碼問題是很常見的。我們在聽到此類反饋后做了一些分析,因此在這篇博客中我們想分享一下我們的發現以及建議。

背景

計算機只能理解 0 和 1 等二進制數據,它使用字符集將數據編碼/解碼為現實世界的字符。兩個進程在進行I/O交互時,必須使用兼容的字符集進行編碼和解碼,否則可能會出現亂碼。MacOS 和 Linux 到處都使用 UTF-8,因此編碼對它們來說不是問題。但是,對於 Windows,默認字符集不是 UTF-8 並且是平台相關的,這會導致不同工具之間的編碼不一致。

常見問題

以下是在 Windows 終端上運行 Java 程序時的典型編碼問題。

  • 文件或目錄名包含Unicode字符,Java啟動器找不到對應的類路徑或主類。
中文目錄
├── Hello.class
└── Hello.java
C:\Test>java -cp 中文目錄 Hello
Error: Could not find or load main class Hello
  • 帶有 Unicode 字符的字符串文字在打印到終端時會出現亂碼。
Exercises
├── 練習.class
└── 練習.java
C:\Test>java -cp ./Exercises 練習
Error: Could not find or load main class ??
Caused by: java.lang.ClassNotFoundException: ??
  • Java程序與終端交互I/O時出現亂碼
public class Hello {
    public static void main(String[] args) {
        System.out.println("你好!");
    }
}
C:\Test>chcp
65001
C:\Test>java -cp ./Exercises Hello
??!
C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello
你好!
  • 程序需要從 stdin 讀取 Unicode 字符,並將 Unicode 字符打印到 stdout。
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println(scanner.nextLine());
    }
}
C:\Test>chcp
65001
C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello 
你好 
��

我們的發現與應對此類問題的建議

之前,為了緩解編碼問題,我們在 Java Debugger 端添加了一些解決方法去強制在我們的工具鏈中使用 UTF-8。例如,添加一個launcher.bat 強制終端的代碼頁為65001 ,並將默認的“file.encoding”屬性設置為“UTF-8”。但事實證明,它們並沒有系統地解決編碼問題,並且還引入了一些額外的副作用(參見#756, microsoft/vscode-java-debug#622, microsoft/vscode-java-debug#646)。

在對該問題進行更多調查后,我們發現我們添加的解決方法似乎沒有必要。用戶只需要將 windows 系統區域設置為他們想要的語言,然后 JVM 和終端將自動更改為與您的系統區域設置兼容的編碼。官方 Java 文檔 ( https://www.java.com/en/download/help/locale.html )也建議這樣做。

以下屏幕截圖顯示了如何在 Windows 中更改系統區域設置。例如,如果您想使用終端在Java程序中輸入漢字,您可以將Windows系統區域設置為中文。默認的 Java 字符集將是”GBK”並且 cmd 代碼頁將是”936″ ,它將很好地支持中文字符。

這是有關如何處理編碼問題的詳細文檔

年末結語

我們快到 2021 年底了,在過去的 12 個月里,我們一直在努力在 Visual Studio Code 上提供更好的 Java 開發體驗。到 2022 年,Visual Studio Code 上的 Java 支持將會有更多令人興奮的事情,所以請繼續關注未來的更新。一如既往,我們感謝用戶以及社區的支持,祝大家聖誕快樂,新年快樂!

反饋與建議

請積極使用我們的產品!您的反饋和建議對我們非常重要,並將幫助我們做得更好。 有幾種方法可以給我們留下反饋

資源

以下鏈接和資源能幫助您更好地了解Java on Visual Studio Code的相關信息


免責聲明!

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



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