我如何配置 IntelliJ IDEA 以允许在 Java 文件中进行 shebang
How can I configure IntelliJ IDEA to allow a shebang in Java files
上下文:
我经常使用 Java launching shebang 使我的 Java 源文件 运行 像脚本一样可用。我还经常 运行 直接从 IntelliJ IDEA 中进行项目。我的许多 Java 文件都以 #!/path/to/my/java/launcher
.
开头
我意识到除了最基本的测试场景之外,这种做法在所有情况下都是有问题的,但这就是我使用它的全部目的。
这很方便,因为我经常 运行 在多个不同的服务器上进行测试,而不是在 IDEA 中进行本地测试。将 IDEA 指向不同的远程服务器以在它们上面 运行 代码是很麻烦的,而只转到这些服务器(代码已经存在,因为它存储在网络共享中)和 运行 文件 ./MyFile.java
,或指导其他人也这样做。
问题:
如果我在 IDEA 中有一个带有 Java shebang 的文件,它将无法编译。 #!
行(以及文件的其余部分)被 IDE 检测为语法错误。
问题:
如何配置 IDEA 以处理包含技术上无效语法 shebang 的 Java 文件?
理想情况下,我能够将 IDEA 告诉 "disregard lines that are first and start with #!
in .java files when syntax-checking/compiling"。但是,如果我可以配置一个笼统的 "ignore the first line of all .java files when syntax-checking/compiling" 规则,我也会很高兴。
从根本上说:如何让 IDEA 支持(编译,认为有效)包含 #!
前缀的 Java 文件第一行?
我尝试过的:
- 我尝试破解 IDEA 使用的
javac
调用以使用 pipes/anonymous 文件描述符和 tail
排除第一行;没有这样的运气。
- 作为构建过程的一部分,我尝试添加工件以去除第一行,但这似乎对语法验证问题没有帮助:即使在构建过程中去除了违规行, IDEA 认为整个文件语法无效,无法构建。
- 我试过使用注释来抑制错误,但是这些注释阻止了 shebang 出现在第一行,此时文件不能 运行 就好像它是脚本一样。
- 我试过在 IDEA 中搞乱检查,但基本的编译检查行为似乎不可配置(至少通过检查界面)。
构建和运行 脚本是否出于某种原因不可接受?
#!/bin/bash
set -e
CLASSPATH="..."
javac -cp "$CLASSPATH" ""
java -cp "$CLASSPATH:." ""
这似乎并不比您 link 的 shebang 解决方案更糟(实际上更好,因为它很明显且标准),因为它也依赖于外部文件。
上下文:
我经常使用 Java launching shebang 使我的 Java 源文件 运行 像脚本一样可用。我还经常 运行 直接从 IntelliJ IDEA 中进行项目。我的许多 Java 文件都以 #!/path/to/my/java/launcher
.
我意识到除了最基本的测试场景之外,这种做法在所有情况下都是有问题的,但这就是我使用它的全部目的。
这很方便,因为我经常 运行 在多个不同的服务器上进行测试,而不是在 IDEA 中进行本地测试。将 IDEA 指向不同的远程服务器以在它们上面 运行 代码是很麻烦的,而只转到这些服务器(代码已经存在,因为它存储在网络共享中)和 运行 文件 ./MyFile.java
,或指导其他人也这样做。
问题:
如果我在 IDEA 中有一个带有 Java shebang 的文件,它将无法编译。 #!
行(以及文件的其余部分)被 IDE 检测为语法错误。
问题:
如何配置 IDEA 以处理包含技术上无效语法 shebang 的 Java 文件?
理想情况下,我能够将 IDEA 告诉 "disregard lines that are first and start with #!
in .java files when syntax-checking/compiling"。但是,如果我可以配置一个笼统的 "ignore the first line of all .java files when syntax-checking/compiling" 规则,我也会很高兴。
从根本上说:如何让 IDEA 支持(编译,认为有效)包含 #!
前缀的 Java 文件第一行?
我尝试过的:
- 我尝试破解 IDEA 使用的
javac
调用以使用 pipes/anonymous 文件描述符和tail
排除第一行;没有这样的运气。 - 作为构建过程的一部分,我尝试添加工件以去除第一行,但这似乎对语法验证问题没有帮助:即使在构建过程中去除了违规行, IDEA 认为整个文件语法无效,无法构建。
- 我试过使用注释来抑制错误,但是这些注释阻止了 shebang 出现在第一行,此时文件不能 运行 就好像它是脚本一样。
- 我试过在 IDEA 中搞乱检查,但基本的编译检查行为似乎不可配置(至少通过检查界面)。
构建和运行 脚本是否出于某种原因不可接受?
#!/bin/bash
set -e
CLASSPATH="..."
javac -cp "$CLASSPATH" ""
java -cp "$CLASSPATH:." ""
这似乎并不比您 link 的 shebang 解决方案更糟(实际上更好,因为它很明显且标准),因为它也依赖于外部文件。