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的相关信息
Java on Visual Studio Code的更新 – 2021年11月的更多相关文章
- Java on Visual Studio Code的更新 – 2021年6月
Nick Zhu from Microsoft VS Code Java Team 大家好,欢迎来到 Visual Studio Code Java 更新的特别年中版.作为这篇文章的重点,我们将看看接 ...
- Java on Visual Studio Code的更新 – 2021年8月
Nick Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 8 月版的 Visual Studio Code Java ...
- Java on Visual Studio Code的更新 – 2021年7月
Nick zhu, Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 7 月版的 Visual Studio Code ...
- Java on Visual Studio Code的更新 – 2021年4月
杨尧今 from Microsoft VS Code Java Team 欢迎来到这一期的VS Code Java更新.又是一个忙碌而富有成效的月份. Java调试器和Java测试扩展获得了新功能.在 ...
- Java on Visual Studio Code的更新 – 2021年3月
欢迎来到Java的VS Code更新.在过去的几个月中,我们的工程师一直在专注于一些非常重要的工作.现在,是时候揭开面纱了,开始吧. 类型层次结构(Type hierarchy) VS Code已经支 ...
- Java on Visual Studio Code的更新 – 2021年5月
杨尧今 from Microsoft VS Code Java Team 欢迎来到 5月的 VS Code for Java 更新.这次,我们将与您分享Java格式化设置编辑器和其他很酷的功能.开始吧 ...
- Java on Visual Studio Code的更新 – 2022年1月
大家好,欢迎来到 Visual Studio Code Java 更新 1 月版!这是我们新年的第一篇博客,我们将回顾 2021 年的亮点,并分享我们 2022 年的产品路线图!除此之外我们还有一些令 ...
- Ubuntu 14.04 下使用微软的跨平台轻量级开发神器 Visual Studio Code
因为 Visual Studio Code 不断更新,官方最新 v1.32 的 .deb 包已经不能用于 Ubuntu 14.04 直接安装了. 下载 v1.31 的 deb 包安装即可:https: ...
- crossplatform---Nodejs in Visual Studio Code 10.IISNode
1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...
随机推荐
- [hdu6582]Path
首先,从1和n跑一次dij,判断每一条边能否出现在最短路上,不能出现就删掉,然后将所有边建在图上,流量为边权,跑最小割即可. 1 #include<bits/stdc++.h> 2 usi ...
- [hdu6598]Harmonious Army
网络流建图,首先将所有价值加起来,用最小割考虑要删掉多少个价值:源点向每一个士兵连流量为x的边,士兵向汇点连流量为y的边,每一对关系间连流量为z的边,考虑有方程x1+y2+z=x2+y1+z=a+c, ...
- 从记账软件看工具类APP的存量运营之道
随着移动互联网的发展,APP的种类越来越多,一些工具类 APP 增长乏力,难以实现长期增长.只有提高用户留存时间,实现流量变现,才能在激烈的市场竞争中持续发展. 工具类APP的特点: 替代性很强: 用 ...
- ZROI 2019 暑期游记
ZROI 游记 在自闭中度过了17天 挖了无数坑,填了一点坑 所以还是有好多坑啊zblzbl 挖坑总集: 时间分治 差分约束 Prufer序列 容斥 树上数据结构 例题C (和后面的例题) 点分 最大 ...
- Codeforces 1270H - Number of Components(线段树)
Codeforces 题目传送门 & 洛谷题目传送门 首先需发现一个性质,那就是每一个连通块所对应的是一个区间.换句话说 \(\forall l<r\),若 \(l,r\) 在同一连通块 ...
- Git常用操作(二)
仓库拉取 git clone XXX 修改仓库链接 $ git config -l # 显示coding列表 $ git config --get remote.origin.url # 返回orig ...
- 如何根据taxid(或taxname)快速获得taxname(或taxid)?
目录 需求 实现 需求 我有一个物种taxonomy ID的list,想获得相应的物种名,不要一个个去NCBI Taxonomy官网查.反之根据物种名list查询对应的taxid. 实现 因为之前没怎 ...
- 【GS模型】使用R包sommer进行基因组选择的GBLUP和RRBLUP分析?
目录 简介 GS示例代码 简介 R包sommer内置了C++,运算速度还是比较快的,功能也很丰富,可求解各种复杂模型.语法相比于lme4包也要好懂一些. 建议查看文档:vignette("v ...
- 【数据库】本地KEGG数据库如何拆分子库?
目录 KEGG本地库文件 按物种拆分KEGG数据库 1.获得物种分类信息 2.获得物种分类的序列信息并建库 3.获得物种分类的K-ko对应文件 根据相似性原理,序列相似,功能相似,所有功能注释无非是用 ...
- R包开发过程记录
目的 走一遍R包开发过程,并发布到Github上使用. 步骤 1. 创建R包框架 Rsutdio --> File--> New Project--> New Directory - ...