【问题标题】:Get same JAVA compilation error as in PowerShell or CMD in Visual Studio Code在 Visual Studio Code 中获得与 PowerShell 或 CMD 相同的 JAVA 编译错误
【发布时间】:2026-01-06 14:40:01
【问题描述】:

我使用的是最新的 Windows 10。我有 JDK 15。最新的 Visual Studio 代码(系统)。在 VS Code 中,我安装了一半的 Java 扩展包,即 Java 语言支持 (Red Hat) | Java 调试器 (Microsoft) | Visual Studio IntelliCode (微软)。所以我这样做只是为了在右上角获得那个运行按钮(默认安装的 VS Code 没有 JAVA 程序的运行按钮),在关闭按钮下方,我可以在 VS Code 中运行 JAVA 程序。我不想出去目录然后打开Power Shell或CMD然后编写java filename.java并运行程序......

现在的问题是,当我单击运行按钮时,我认为在 VS Code 中打开了一个 Power Shell,然后正在编写除“java FileName.java”之外的其他内容。因此,我无法真正看到编译错误是什么。我只能看到line number where the problem is,而不是真正的解决方案。 ||如果我在 VS Code 之外的 PowerShell 中使用此“java FileName.java”运行相同的程序,我可以看到有 some issue at x line and also the solution for the same.

所以我想知道是否有任何方法可以在Visual Studio Code 中获取this type of output。 或者,如果有什么方法可以在我单击顶部的“运行”按钮时简单地告诉 Visual Studio Code 在 VS Code 中运行“java fileName.java”,而不是写很多像 this 这样的东西。

编辑:

我正在运行的代码是这个..... 文件名 - test.java

import java.io.*; 
public class SOPFileTest{ 
public static void main(String arr[]){
    try{
        // Creating a File object that represents the disk file. 
        PrintStream o = new PrintStream(new File("A.txt")); 

        // Store current System.out before assigning a new value 
        PrintStream console = System.out; 

        // Assign o to output stream 
        System.setOut(o); 
        System.out.println("Test 1"); 

        // Use stored value for output stream 
        System.setOut(console); 
        System.out.println("Test 2"); 
    }
    catch(Exception e){
        System.out.println(e.getMessage());
    }  
} 

现在我注意到了一些东西,它们是:

-When(文件名 == 类名)
---然后(VS代码)
-----在控制台中打印最后一个 System.out.println
-----A.txt 不是在里面创建/写入的
---然后(Powershell)
-----在控制台中打印最后一个 System.out.println
-----A.txt 是在里面创建和/或写入的

-When (FileName != Class Name)
---然后(VS代码)
-----显示的错误与我上面包含的图像相同。
---然后(Powershell)
-----在控制台中打印最后一个 System.out.println
-----A.txt 是在里面创建和/或写入的

所以 powershell 可以按我的意愿工作,VS Code 不是...

【问题讨论】:

  • 你能贴出代码让我重现你的问题吗?如果方便的话。
  • 是的……我编辑了他的问题……

标签: java powershell visual-studio-code


【解决方案1】:

如果文件名与 ClassName 不同,java 扩展会检测到它并抛出问题,即构建失败,您可以选择是否继续:

如果您选择继续,则应该有:

[更新 -- Powershell 中的屏幕截图:]

这和 VS Code 中显示的问题差不多。

Java 扩展要求class 必须在自己的文件中定义,所以文件名应该和 ClassName 一样,然后一切正常,无论是在 VS Code 中的集成终端中,还是在 PowerShell 中VS代码之外:

所以我想知道是否有任何方法可以获得这种类型的输出 在 Visual Studio Code 中。

保持文件名和类名相同,确保可以成功构建和编译,这是第一步。

并且文本文件应该在当前工作目录中生成,在你的文件资源管理器中检查它。

【讨论】:

  • 啊是的....我注意到了,并且确实更改了类名....我把它改成了一样的..但我想做的是,而不是像“线程'main'中的异常...”(此答案的图2),我想查看PS“'main'中的未捕获异常...”中显示的错误(我保留在问题中的第二张图片)。我希望 错误消息VS Code 中的集成终端中的 相同PS 外部 VS 代码 中的相同...希望你得到了我想要的意思是……
  • @SreyasC.V.我已经更新了powershell中的截图,你可以尝试再次编译,错误内容和VS Code中的问题几乎一样。
  • 我不认为你仍然明白......我想在 VS Code 的集成终端中看到图 3 的错误消息。我不想看到图 2 的错误信息。这个问题从来不是关于程序中的错误,而是关于在两个终端中得到相同的错误信息。
  • 好吧,简单来说,因为在Powershell中,只有jdk有效,而在vscode中,jdk和扩展都有效。所以错误的描述会有点不同,但主要含义是一样的。