上下文
我经常使用Java launching shebang使我的Java源文件可以像脚本一样运行。我还经常直接从IntelliJ IDEA运行项目。我的许多Java文件都以#!/path/to/my/java/launcher
开头。
我意识到除了最基本的测试场景之外,这种做法都是值得怀疑的,但这就是我用它的全部内容。
这很方便,因为我经常在IDEA本地测试时在多个不同的服务器上运行测试。将IDEA指向不同的远程服务器以在其上运行代码是很麻烦的,并且更容易去那些服务器(代码已存在,因为它存储在网络共享中)并运行带有./MyFile.java
的文件,或者指导他人也这样做。
问题:
如果我在IDEA中有一个带有Java shebang的文件,它将无法编译。 IDE会将#!
行(以及文件的其余部分)检测为语法错误。
问题:
如何配置IDEA以使用包含技术无效语法shebang的Java文件?
理想情况下,我可以告诉IDEA“在语法检查/编译时忽略.java文件中首先使用#!
的行”。但是,如果我能配置一个“在语法检查/编译时忽略所有.java文件的第一行”规则,我也会很高兴。
更基本的说法:如何让IDEA支持(编译,认为有效)包含#!
- 前缀第一行的Java文件?
我尝试过的事情:
javac
调用来使用管道/匿名文件描述符和tail
来排除第一行;没有这样的运气。 答案 0 :(得分:3)
由于某种原因,构建并运行的脚本是不可接受的吗?
#!/bin/bash
set -e
CLASSPATH="..."
javac -cp "$CLASSPATH" "$1"
java -cp "$CLASSPATH:." "$1"
这似乎并不比你链接到的shebang解决方案更糟糕(实际上更好,因为它显而易见且标准),因为它还依赖于外部文件。