首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么VSCode一直在打开*.class文件,而不是.java文件?

为什么VSCode一直在打开*.class文件,而不是.java文件?
EN

Stack Overflow用户
提问于 2021-01-15 03:17:18
回答 3查看 282关注 0票数 1

(我不知道如何将屏幕截图上传到stackoverflow。所以这是一个流媒体链接:https://streamable.com/0im8tx)

在这段视频中,当我点击进入QueriesController时,VSCode打开了QueriesController.class,而不是QueriesController.java。

我已经在我的工作区中编译并提供了jar文件的定义:

代码语言:javascript
复制
    "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文件的形式打开定义吗?

EN

回答 3

Stack Overflow用户

发布于 2021-01-15 16:04:47

我使用命令生成一个简单的jar包,并在另一个项目中使用它。确实,当我们单击类名时,打开的是.class文件而不是.java文件:

关于如何生成一个可执行的jar包,您可以查看这个reply

  1. 编译.java文件并生成.class;

  1. 生成清单并将其打包到jar

一般而言,JAR (Java ARchive)是一种打包文件格式,通常用于聚合许多Java class files和相关metadataresources (文本、图像等)。放入一个文件中以供分发。

.java文件不包含在jar包中,这就是为什么您打开的是.class文件而不是.java文件。

票数 0
EN

Stack Overflow用户

发布于 2021-01-15 16:46:29

我不熟悉VSCode,但您的问题在大多数IDE中都很常见。

通常,当生成jar时,它由编译的类文件组成,而不是原始源代码。这样做的原因是为了尽可能高效和快速地运行代码,通常人们不希望源代码放在jar中,因为在运行时,它们还必须重新编译,这是浪费时间。

看看这张照片。我刚刚从mavenrepository下载了一个jar文件,它下载了jar的编译版本。扩展名为.class

集成开发环境所做的是尝试使用反编译器(在本例中,您可以看到FernFlower反编译器)对代码进行反编译。

但是,它缺乏源代码(.java)所具有的格式化和代码内文档。这就是为什么大多数IDE提供下载源代码的原因。Intellij在顶部显示了这一点。其他IDE可能会将这种设置埋藏在很深的地方。(您可能需要自己检查)

下载源代码时,IDE会尝试联系服务器并下载原始源代码。它可能看起来像这样:

如果仔细观察,您可以看到名称已更改为代表源代码的.java

票数 0
EN

Stack Overflow用户

发布于 2021-09-02 12:21:09

VS代码在Java设置,Maven Java下载源代码和下载源代码下有选项。

默认情况下未启用。启用后,VS代码会显示正确的源文件,尽管名称似乎是.Class文件。(在按住Ctrl键的同时单击符号、方法实现、注释等、JavaDoc注释时)

如果在m2存储库中找不到适当的源代码,它会显示带有存根方法的反编译类文件。与此类似的注释显示在文件的开头。

代码语言:javascript
复制
// 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存储库中)。

希望这能有所帮助!祝你编码愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65725539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档