(我不知道如何将屏幕截图上传到stackoverflow。所以这是一个流媒体链接:https://streamable.com/0im8tx)
在这段视频中,当我点击进入QueriesController时,VSCode打开了QueriesController.class,而不是QueriesController.java。
我已经在我的工作区中编译并提供了jar文件的定义:
"settings": {
"java.project.referencedLibraries": {
"include": [
"<path-to-jar-that-contains-QueriesController.jar>",
....
"sources": {
"<path-to-jar-that-contains-QueriesController.jar>": "/my/local/java/definition/src/folder",有人知道为什么VSCode选择以.class文件而不是.java文件的形式打开定义吗?
发布于 2021-01-15 16:04:47
我使用命令生成一个简单的jar包,并在另一个项目中使用它。确实,当我们单击类名时,打开的是.class文件而不是.java文件:

关于如何生成一个可执行的jar包,您可以查看这个reply
中
一般而言,JAR (Java ARchive)是一种打包文件格式,通常用于聚合许多Java class files和相关metadata和resources (文本、图像等)。放入一个文件中以供分发。
.java文件不包含在jar包中,这就是为什么您打开的是.class文件而不是.java文件。
发布于 2021-01-15 16:46:29
我不熟悉VSCode,但您的问题在大多数IDE中都很常见。
通常,当生成jar时,它由编译的类文件组成,而不是原始源代码。这样做的原因是为了尽可能高效和快速地运行代码,通常人们不希望源代码放在jar中,因为在运行时,它们还必须重新编译,这是浪费时间。

看看这张照片。我刚刚从mavenrepository下载了一个jar文件,它下载了jar的编译版本。扩展名为.class
集成开发环境所做的是尝试使用反编译器(在本例中,您可以看到FernFlower反编译器)对代码进行反编译。
但是,它缺乏源代码(.java)所具有的格式化和代码内文档。这就是为什么大多数IDE提供下载源代码的原因。Intellij在顶部显示了这一点。其他IDE可能会将这种设置埋藏在很深的地方。(您可能需要自己检查)
下载源代码时,IDE会尝试联系服务器并下载原始源代码。它可能看起来像这样:

如果仔细观察,您可以看到名称已更改为代表源代码的.java。
发布于 2021-09-02 12:21:09
VS代码在Java设置,Maven Java下载源代码和下载源代码下有选项。
默认情况下未启用。启用后,VS代码会显示正确的源文件,尽管名称似乎是.Class文件。(在按住Ctrl键的同时单击符号、方法实现、注释等、JavaDoc注释时)
如果在m2存储库中找不到适当的源代码,它会显示带有存根方法的反编译类文件。与此类似的注释显示在文件的开头。
// Failed to get sources. Instead, stub sources have been generated by the disassembler.
// Implementation of methods is unavailable.在这两种情况下,VS Code都以只读模式将maven库文件显示为.Class文件。此外,源文件不会显示在Java Project Explorer中(即使它存在于本地.m2存储库中)。
希望这能有所帮助!祝你编码愉快!
https://stackoverflow.com/questions/65725539
复制相似问题