繁体   English   中英

如何配置IntelliJ IDEA以允许Java文件中的shebang

[英]How can I configure IntelliJ IDEA to allow a shebang in Java files

语境:

我经常使用Java启动shebang来使我的Java源文件可以像脚本一样运行。 我还经常直接从IntelliJ IDEA运行项目。 我的许多Java文件都以#!/path/to/my/java/launcher开头。

我意识到除了最基本的测试场景之外,这种做法都值得怀疑,但这就是我用它的全部内容。

这很方便,因为我经常在IDEA本地测试时在多个不同的服务器上运行测试。 将IDEA指向不同的远程服务器以在其上运行代码是很麻烦的,并且更容易去那些服务器(代码已存在,因为它存储在网络共享上)并使用./MyFile.java运行文件,或者指导他人也这样做。

问题:

如果我在IDEA中有一个带有Java shebang的文件,它将无法编译。 #! IDE(和文件的其余部分)被IDE检测为语法错误。

题:

如何配置IDEA以使用包含技术无效语法shebang的Java文件?

理想情况下,我可以告诉IDEA“在语法检查/编译时忽略首先使用.java文件中的#! ”。 但是,如果我可以配置“在语法检查/编译时忽略所有.java文件的第一行”规则,我也会很高兴。

更基本的说法如何让IDEA支持(编译,认为有效)包含#! Java文件#! -prefixed第一行?

我试过的:

  • 我试图破解IDEA使用的javac调用来使用管道/匿名文件描述符和tail来排除第一行; 没有这样的运气。
  • 我已经尝试添加工件来删除第一行作为构建过程的一部分,但这似乎没有帮助语法验证问题:即使在构建过程中将删除有问题的行,IDEA也会认为整个文件语法无效,无法构建。
  • 我已经尝试使用注释来抑制错误,但那些阻止了shebang在第一行,此时文件无法像脚本一样运行。
  • 我曾尝试弄乱IDEA中的检查,但基本的编译检查行为似乎不可配置(至少通过检查界面)。

由于某些原因,构建并运行的脚本是不可接受的吗?

#!/bin/bash

set -e

CLASSPATH="..."

javac -cp "$CLASSPATH" "$1"
java -cp "$CLASSPATH:." "$1"

这似乎并不比你链接到的shebang解决方案更糟糕(事实上更好,因为它显而易见且标准),因为它还依赖于外部文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM