shebang
在Java 11中,对java
启动器进行了增强,可以直接运行单文件源代码程序,而不必先编译它们。
例如,考虑以下仅添加其参数的类:
import java.util.*;
public class Add {public static void main(String[] args) {System.out.println(Arrays.stream(args).mapToInt(Integer::parseInt).sum());}
}
在Java的早期版本中,您首先必须编译源文件,然后按以下方式运行它:
$ javac Add.java
$ java Add 1 2 3
6
在Java 11中,无需编译文件! 您可以直接运行它,如下所示:
$ java Add.java 1 2 3
6
甚至没有必要在文件上具有“ .java”扩展名。 您可以随意调用该文件,但是,如果文件不具有“ .java”扩展名,则需要指定--source
选项,以告知java
启动器使用源文件模式。 在下面的示例中,我将文件重命名为MyJava.code
并使用--source 11
运行它:
$ java --source 11 MyJava.code 1 2 3
6
它变得更好! 也可以使用shebang( #!
)机制在基于Unix的系统上直接运行Java程序。
例如,您可以从Add.java
获取代码,并将其放置在名为add
的文件中,并在文件的开头add
shebang,如下所示:
#!/path/to/java --source 11
import java.util.*;
public class Add {public static void main(String[] args) {System.out.println(Arrays.stream(args).mapToInt(Integer::parseInt).sum());}
}
使用chmod
将文件标记为可执行文件,然后按以下方式运行它:
$ chmod +x add
$ ./add 1 2 3
6
翻译自: https://www.javacodegeeks.com/2019/01/running-single-programs-shebang-scripts.html
shebang