IntelliJ IDEA 2025.1 Help

教程:运行 Java 应用程序

本教程解释了如何运行 Java 应用程序、使用运行/调试配置、将程序输出保存到文件以及添加自定义 VM 选项。 它还涵盖了运行 Java 应用程序所需的设置,例如创建新项目和配置 JDK。

创建一个新项目

  1. 启动 IntelliJ IDEA。

    如果欢迎屏幕打开,请点击 新建项目。 否则,请转到主菜单中的 文件 | 新建 | 项目

  2. 从左侧列表中选择 Java。 为项目命名。

  3. 选择 Maven 作为 构建系统 并勾选 添加示例代码

  4. JDK 列表中,选择最新可用的 Oracle OpenJDK 版本。

    如果 JDK 已安装在您的计算机上,但未在 IDE 中定义,请选择 添加 JDK 并指定 JDK 主目录的路径。

    如果您的计算机上没有必要的 JDK,请选择 下载JDK

  5. 点击 创建

创建新项目

运行应用程序

  1. 项目创建后,在 项目 工具窗口(Alt+1 )中找到 src | main | java | Main.java 文件,并在编辑器中打开。

  2. 将现有代码替换为以下代码示例:

    package org.example; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream.iterate(1, i -> i + 1) .limit(10) .forEach(System.out::println); } }
  3. 在编辑器中,点击 图标运行应用程序并选择 运行 'Main.main()'

    运行应用程序

IntelliJ IDEA 运行您的代码并在屏幕底部的 运行 工具窗口中显示其输出。 应用程序已成功运行,因此您将在输出中看到 Process finished with exit code 0 消息。

应用程序已编译

当您点击 运行 时,IntelliJ IDEA 创建了一个临时的 运行配置 ,命名为 Main 类。 它定义了运行应用程序的入口点和参数。 到目前为止,我们尚未使用任何启动参数,但稍后会添加。

默认情况下,临时配置数量限制为 5 个,所以在添加新配置时,旧配置会被自动删除。 这就是为什么保存您想要保留的临时配置是有意义的。

保存运行配置

  1. 在主菜单中,前往 运行 | 编辑配置

  2. 在左侧区域,选择 Main 配置并点击上方工具栏中的 保存配置 图标。 不要关闭对话框。

    临时配置的图标是透明的。 保存后, Main 的图标变为实心。

保存运行配置

将控制台输出保存到文件

现在让我们复制此配置并予以修改,以便 IDE 每次运行该配置时将控制台输出保存到文件中。 如果您使用控制台输出进行日志记录,这可能会很有用。

  1. 在左侧区域,选择 Main 配置并点击工具栏上的 。 这将创建运行配置的副本。

  2. 在右侧区域,将配置重命名为 SaveConsoleOutput

  3. 点击 修改选项(M) 并从 日志 设置组中选择 将控制台输出保存到文件(S)。 新的 将控制台输出保存到文件(S) 字段会出现在对话框中。

  4. 指定 IDE 将写入输出的文件的路径。 如果文件不存在,则会自动创建。

    在我们的示例中,我们将在项目目录中创建一个文件,因此根据您的操作系统和用户名,路径将如下所示: /Users/me.user/IdeaProjects/RunApplication/console.txt

    将控制台输出保存到文件
  5. 应用更改并关闭对话框。

运行已保存的配置

  1. 在窗口标题的 运行小部件 中选择 SaveConsoleOutput ,并点击旁边的 或按 Shift+F10

    运行配置
  2. 当 IDE 完成运行配置后,在 项目 工具窗口中找到带有控制台输出的新文件,并确保应用程序的输出在那里。

控制台输出已保存到文件

运行配置允许您使用不同的参数运行相同的应用程序。 现在您有了两种配置,您可以根据需要进行选择。 例如,如果您每次运行应用程序时都不需要保存控制台输出,您可以运行没有此设置的 Main 配置。

Alt+Shift+F10 或使用窗口顶部的运行小部件在配置之间切换:

运行小部件切换器

让我们来看看另一种情况。

更改代码

想象一下,我们的代码示例有一个问题。

  1. Main.java 文件中,删除:

    Stream.iterate(1, i -> i + 1) .limit(10) .forEach(System.out::println);

    相反,粘贴以下代码:

    var list = Stream.iterate(1, i -> i + 1) .toList(); System.out.println(list.size());
  2. 在编辑器中,点击 图标运行应用程序并选择 运行 'Main.main()'

应用程序运行了几秒钟,然后因 OutOfMemoryError 失败。 我们的程序创建了一个无限整数流,然后尝试使用 toList() 方法将其收集到列表中。 由于流是无限的, toList() 方法将永远不会返回,程序将持续消耗内存直到失败。

应用程序因 OutOfMemoryError 而失败

如果应用程序因 OutOfMemoryError 失败,我们可以添加一个 VM 选项,在崩溃前将内存转储到 .hprof 文件中。 稍后,我们将能够使用内置的 profiler 对此文件进行详细分析。

添加虚拟机选项

  1. 在主菜单中,前往 运行 | 编辑配置

  2. 在左侧区域,点击 Main 配置,然后点击工具栏上的 以克隆配置。 将新配置重命名为 OutOfMemory

  3. 打开 修改选项 列表并点击 添加 VM 选项

  4. 对话框中会出现 虚拟机选项 字段。 在该字段中,添加以下选项,并用空格隔开:

    -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

    应用程序因 OutOfMemoryError 而失败

    -XX:+HeapDumpOnOutOfMemoryError 指定如果应用因 OutOfMemoryError 崩溃,应创建堆转储, -Xmx512m 设置堆的大小为 512 MB,以便堆转储不会太大。

  5. 应用更改并关闭对话框。

  6. 运行小部件 中选择 OutOfMemory ,并点击旁边的 或按 Shift+F10

运行 工具窗口打开,向您展示 OutOfMemoryError 异常已被抛出。 由于我们已配置相应的 VM 选项,IDE 已在您的项目目录中创建了一个 .hprof 文件。

已创建 .hprof 文件
最后修改日期: 2025年 4月 24日