IntelliJ IDEA 运行配置
理论
IntelliJ IDEA 使用运行/调试配置来运行、调试和测试应用程序。运行/调试配置代表一组用于运行程序的启动属性,例如 VM 或 JRE 选项。它还包含有关您在启动时传递给程序的命令行参数的信息。
§1. 运行/调试配置对话框
应用程序运行/调试配置使您可以通过主方法运行或调试应用程序。要设置配置,请打开 编辑配置 对话。
程序启动时要传递的命令行参数在 程序参数 场地。
参数以空格分隔的字符串序列传递。在运行程序时,字符串将是传递给其入口点的命令行参数。命令行元素之间的分隔符是空格字符,行尾分隔符是换行符。
§2. 在配置中传递参数
要将参数传递给程序,您应该以在命令行上使用的格式输入参数列表。空格将被解析为分隔符,将一个参数与另一个参数分开。这些参数将作为数组传递给程序的入口点。
重要的是要记住,所有命令行参数都是作为字符串传递的,因此如果它们应该被视为整数,则应该在程序内部明确转换它们。
为了正确传递参数,您应该使用下一段中的规则列表。
§3. 参数传递规则
指定参数时,请遵循以下规则:
- 使用空格分隔各个参数,例如, --数据文本.txt.
- 如果参数包含空格,请将空格或包含空格的参数括在双引号中,例如, 一些” “参数 或者“一些参数”.
- 如果参数包含双引号(作为参数的一部分),请使用反斜杠对双引号进行转义,例如, \"quoted_value\".
例如,如果你想传递两个参数, - 数据 和文本.txt,您应该按照上述规则按照以下示例插入它们:
§4。结论
让我们回顾一下在本主题中学到的知识:
- 要在 IntelliJ IDEA 中为应用程序传递命令行参数,请转到 运行/调试配置 对话框并设置程序参数 场地。
- 为了正确指定命令行参数,请遵循第三段中的规则。
您还可以查看 hyperskill.org 上的课程.
实践任务及答案
给出了任务和答案选项。正确选项以 蓝色的 颜色。
№1. 注意规则
问题: 将传递的参数行与实际参数进行匹配。我们已在方括号中指出它们。
匹配左列和右列的项目:
- --data "Android 指挥官" Soong - [--data] [Android 指挥官] [Soong]
- --data" "指挥官 Android Soong - [--data 指挥官] [Android] [Soong]
- --data 指挥官 Android \"Soong\" - [--data] [指挥官] [Android] ["Soong"]
- --data "指挥官" Android Soong - [--data] [指挥官] [Android] [即将推出]
解释。 传递参数行和实际参数的正确匹配是:
传递参数 | 实际参数
- --data “Android 指挥官” Soong | --data、指挥官、Android、Soong
- --data" "指挥官 Android Soong | --data, 指挥官, Android, Soong
- --data Android 指挥官 \"Soong\" | --data, Android 指挥官, Soong
- --data “指挥官” Android Soong | --data、指挥官、Android、“Soong”
--data 选项以字符串作为参数。字符串可以包含任何字符,包括空格、逗号和引号。如果字符串包含空格或逗号,则必须使用双引号进行转义。
例如,以下两行论点是等效的:
- --data “指挥官Android Soong”
- --data 指挥官 Android \“Soong\”
第一行中,Commander 和 Android 之间的空格使用双引号进行了转义。第二行中,空格没有被转义,但引号被转义了。
以下两行论点并不等价:
- --data 指挥官Android Soong
- --data 指挥官, Android, Soong
第一行只有三个参数,第二行有四个参数,第二行的第四个参数是“Android”和“Soong”之间的逗号。
№2. 哪个标签?
问题: 在运行/调试配置对话框中哪里可以找到程序命令行参数?
从列表中选择一个选项:
- 日志选项卡
- 发射窗口之前
- 代码覆盖率选项卡
- 配置选项卡 ✔
解释。 正确的选项是“配置”选项卡。在“运行/调试”配置对话框中,程序命令行参数位于“配置”选项卡中的“程序参数”字段下。“日志”选项卡显示程序的输出,包括任何错误或警告。“启动前”窗口允许您在程序启动前运行自定义命令。“代码覆盖率”选项卡显示程序运行时执行了多少代码。
№3. 传递一些参数
问题: 假设您有一个程序读取文本文件的内容并将其写入控制台。它通过命令行参数接受文件名。如果您需要输出位于程序根文件夹中的文件 example.txt 和 implementation.txt 的内容,并且 example.txt 文件内容应该放在最前面,那么传递给程序的参数是什么?
输入简短的文字: 示例.txt 实现.txt ✔
解释。 输出程序根文件夹中的 example.txt 和 implementation.txt 文件的内容(其中 example.txt 文件内容在前),需要传递给程序的参数为:
示例.txt 实现.txt
您需要用空格分隔文件名。然后程序将按照您指定的顺序读取文件的内容,并将它们写入控制台。example.txt 的内容将首先写入,然后是 implementation.txt 的内容。
下面是在基于 Unix 的系统上运行该程序的示例:
$ ./程序示例.txt 实现.txt
这将运行名为 program 的程序,并将文件名 example.txt 和 implementation.txt 作为命令行参数传递。然后程序将读取文件的内容并将其写入控制台。
№4. 确定论点
问题: 您将以下行作为参数列表传递给程序:“sys\”\“ \”path” 参数是什么?
从列表中选择一个选项:
- “系统路径
- “系统路径
- 系统路径
- sys"" "路径 ✔
解释。 正确答案是 sys"" "path。字符串 "sys"" "path" 用双引号括起来。这意味着单词 "sys"、"""、"path" 之间的空格被解释为文字空格,而不是参数之间的分隔符。因此,传递给程序的参数是 "sys"、""" 和 "path"。其他选项不正确,因为它们没有考虑字符串中单词之间的空格。例如,选项 "sys path" 会将字符串拆分为两个参数:“sys”和“path”。选项 "sys "path" 也会将字符串拆分为两个参数,但第一个参数将是 "sys ",这不是有效参数。选项 "sys" "path" 会将字符串拆分为三个参数:“sys”、“""" 和 "path"。但是,第二个参数将是 """,这不是有效参数。
№5. 计数参数
问题:通过下面这一行向程序传递了多少个参数?
--text-files task.txt output_for"任务"_lines.txt --folder-name "我的主题"
输入一个数字: 5 ✔
解释。 通过下面这行代码向程序传递了五个参数:
--text-files task.txt output_for"任务"_lines.txt --folder-name "我的主题"
论点如下:
- --text-files:这是指定程序应该处理的文本文件的选项。
- task.txt:这是第一个文本文件的名称。
- output_for"Task"_lines.txt:这是第一个文本文件的输出文件的名称。
- --folder-name:这是指定包含文本文件的文件夹的选项。
- “我的主题”:这是包含文本文件的文件夹的名称。
第一个参数 --text-files 后面跟着一个文本文件列表。文本文件列表用双引号括起来。这意味着文件名之间的空格被解释为文字空格,而不是参数之间的分隔符。因此,第一个参数实际上是 4 个参数合一。
正确的结论是,向程序传递了 5 个参数。
№6. 输出
问题: 您正在传递参数1 2 到以下程序:
Java:
public static void main(String[] args) {
System.out.println(args[0] + args[1]);
}
科特林:
fun main(args: Array<String>) {
print(args[0] + args[1])
}
输出会是什么?
从列表中选择一个选项:
- 12 ✔
- 将发生 IOException
- 1+2
- 3
解释。 发生的是连接,而不是加法!
№7. 查尔的失误
问题: 您的同事 Charles 正在尝试传递这些论点:--data 艾玛·罗道夫“莱昂” 对于这样的程序:
--数据” “艾玛,罗道夫,/“莱昂/”
但他没有成功,他变得悲伤。帮助他发现并改正他的错误,让查尔斯开心。
从列表中选择一个或多个选项:
- --data 和 Emma 之间不必要的双引号✔
- 在 Leon 周围使用正斜杠代替反斜杠 ✔
- Emma 和 Rodolphe 后面的逗号多余 ✔
- Leon 周围不必要的反斜杠
- --data 后没有逗号
解释。 以下是查理在指挥中所犯的错误:
- 他在“Leon”两边使用了双引号而不是单引号。单引号用于传递包含空格或特殊字符(如引号)的参数。
- 他在“Leon”两边使用了正斜杠,而不是反斜杠。反斜杠用于在 Windows 命令提示符中转义特殊字符。
- 他在“Rodolphe”后面加了一个逗号。命令参数中不允许使用逗号。
为了纠正他的错误,查尔斯应该使用以下命令:
--data "艾玛,罗道夫,\"莱昂\""
该命令将正确地将参数“Emma”、“Rodolphe”和“Leon”传递给程序。
该命令的具体内容如下:
- --data 选项告诉程序以下参数是数据。
- “Emma、Rodolphe 和“Leon””两端的双引号用于将参数作为单个字符串传递。
- “Leon”两侧的反斜杠用于转义字符串中的引号。
- “Rodolphe”后面的逗号是不允许的,因此应该将其删除。
№8. 自体配置
问题: 什么代表运行/调试配置?
从列表中选择一个选项:
- 仅在启动时传递给程序的命令行参数
- Java 虚拟机选项可提供更好的性能和调试
- 启动属性集:JVM 或 JRE 选项、命令行参数✔
- “运行”和“调试”命令
解释。 运行/调试配置是一组启动属性,包括 JVM 或 JRE 选项、命令行参数和其他配置设置,用于定义程序的运行或调试方式。它用于指定应在其中启动应用程序的环境,并且可以包含要执行的主类、程序参数和环境变量等选项。此配置还可以包含 Java 虚拟机选项,以实现更好的性能和调试。因此,正确答案是:
启动属性集:JVM 或 JRE 选项、命令行参数
第九名 战争与和平
问题: 假设您需要向程序传递以下三个参数:L. Tolstoy,“战争与和平”,1867年。在参数字段中正确的写法是什么?
从列表中选择一个选项:
- 列宁·托尔斯泰《战争与和平》1867年
- 列宁·托尔斯泰《“战争”与“和平”》1867年
- “列·托尔斯泰”《战争与和平》1867年✔
- 列宁·托尔斯泰《战争与和平》1867年
解释。 在参数字段中写入参数的正确方法是:
列宁·托尔斯泰《战争与和平》1867年
书名的字符串文字需要用双引号括起来。单引号不起作用,因为单词“War”和“and”之间的空格将被解释为分隔符。
您提供的代码输出以下内容:
列宁·托尔斯泰《战争与和平》1867年
这是不正确的,因为书名没有用双引号括起来。
下面是如何在 Java 程序中使用参数的示例:
例子
public class PrintArguments {
public static void main(String[] args) {
printArguments("L. Tolstoy", "\"War and peace\"", 1867);
}
public static void printArguments(String author, String book, int year) {
System.out.println(author);
System.out.println(book);
System.out.println(year);
}
}
此代码定义了一个名为 print_arguments() 的函数,该函数接受三个参数:作者姓名、书名和出版年份。然后,该函数将这些参数打印到控制台。
执行此代码时,它将在控制台上打印以下输出:
列宁·托尔斯泰 战争与和平 1867 年
№10. 难题
问题: 将参数“Bolek_and_Lolek”传递给程序。
提示:所有内容(包括双引号)都是参数的一部分。
输入简短的文字: \“Bolek_and_Lolek\”✔
IntelliJ IDEA 运行配置是什么?
IntelliJ IDEA 运行配置是一组定义如何运行项目的设置。这些设置可以包括以下内容:
- 要运行的程序
- 命令行参数
- 环境变量
- 其他设置,例如调试器
运行配置可用于在本地计算机、远程服务器或 Docker 容器中运行项目。它们还可用于在不同的环境中运行项目,例如开发、测试和生产。
要创建新的运行配置,请打开“运行/调试配置”对话框 (Ctrl+Shift+F10) 并单击“+”按钮。在“新运行配置”对话框中,选择要运行的程序类型。
创建运行配置后,您可以通过在“运行/调试配置”对话框中双击它来编辑它。您还可以通过单击旁边的绿色箭头从运行配置运行项目。
以下是如何在 IntelliJ IDEA 中使用运行配置的一些示例:
- 您可以创建运行配置以使用特定命令行参数运行 Java 程序。
- 您可以创建运行配置以在本地 Web 服务器上运行 Web 应用程序。
- 您可以创建运行配置以在 Docker 容器中运行 Python 程序。
运行配置是一个强大的工具,可用于在不同的平台和不同的环境中运行项目。
以下是有关 IntelliJ IDEA 中的运行配置的一些其他事项:
- 您可以为同一个项目创建多个运行配置。如果您想以不同的方式运行项目(例如使用不同的命令行参数或环境变量),这将非常有用。
- 您可以将运行配置保存为项目文件。这样您就可以与其他开发人员共享它们或将它们导入到其他项目中。
- 您可以通过键盘快捷键运行运行配置。如果您经常运行相同的运行配置,这将非常有用。
以下是 IntelliJ IDEA 中可用的一些不同类型的运行配置:
- 应用程序:此类运行配置用于运行独立应用程序。
- JUnit:这种类型的运行配置用于运行 JUnit 测试。
- TestNG:此类运行配置用于运行 TestNG 测试。
- Spring Boot:这种运行配置用于运行 Spring Boot 应用程序。
- Docker:这种运行配置用于运行 Docker 容器。