Java on Visual Studio Code 的更新 2021 年 11 月 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winffee
V2EX    Visual Studio Code

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

  •  
  •   winffee 2021-12-17 13:37:43 +08:00 2048 次点击
    这是一个创建于 1472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,欢迎来到 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:Couldnot find or load main classHello 
    • 带有 Unicode 字符的字符串文字在打印到终端时会出现乱码。

      Exercises ├──练习.class └──练习.java 

     C:\Test\>java -cp ./Exercises 练习 Error:Couldnot find or load main class?? Causedby: java.lang.ClassNotFoundException:?? 
    • Java 程序与终端交互 I/O 时出现乱码

      publicclassHello{ publicstaticvoid main(String[] args){ System.out.println("你好!"); } } 

     C:\Test\>chcp 65001 C:\Test\>java -cp ./ExercisesHello ??! C:\Test\>java -Dfile.encoding=UTF-8-cp ./ExercisesHello 你好! 
    • 程序需要从 stdin 读取 Unicode 字符,并将 Unicode 字符打印到 stdout 。

      import java.util.Scanner; publicclassHello{ publicstaticvoid main(String[] args){ Scanner scanner =newScanner(System.in); System.out.println(scanner.nextLine()); } } 

     C:\Test\>chcp 65001 C:\Test\>java -Dfile.encoding=UTF-8-cp ./ExercisesHello 你好 

    我们的发现与应对此类问题的建议

    之前,为了缓解编码问题,我们在 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 的相关信息

    2 条回复    2021-12-17 14:26:19 +08:00
    billly
        1
    billly  
       2021-12-17 14:09:10 +08:00
    支持!
    zhangxh1023
        2
    zhangxh1023  
       2021-12-17 14:26:19 +08:00
    资瓷!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     828 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 21:03 PVG 05:03 LAX 13:03 JFK 16:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86