JEP 330描述了JDK 11中用于在Java中启动单个文件程序的一个新特性.我试过:
$ ./Example.java
但不起作用。正确的用法是什么?
发布于 2018-08-20 17:16:49
简短版本:
$ java Example.java data.txt或(与#!):
$ ./example data.txt详细信息:
工作示例这里。
考虑一个单独的文件程序来打印文件中的行:
import java.nio.file.*;
import java.util.stream.Stream;
public class ExampleJDK11 {
public static void main(String[] args) throws Exception {
// snip ... print file args[0]
}
}用法1:
假设代码在Example.java中,并且java位于PATH上,那么使用如下:
java Example.java data.txt
javac步骤(!)用法2:
假设代码在一个文件example中,在顶部有一个"shebang“行:
#!/Users/measter/tools/jdk-11.jdk/Contents/Home/bin/java --source 8
import java.nio.file.*;
import java.util.stream.Stream;
// as above用法是:
./example data.txt
发布于 2018-08-20 18:01:00
尽管你的回答包含正确的信息。只要尝试将其简化,就可以使用java从JDK11开始执行一个文件,例如在MacOS上执行。
.../jdk-11.jdk/Contents/Home/bin/java Sample.java这将查找并执行标准的public static void main(String[] args)方法。可以注意到(甚至初学者),该方法接受args类型的String,因此在执行原始命令行中源文件的名称后放置的参数将传递给已编译的类。因此,以下命令
.../jdk-11.jdk/Contents/Home/bin/java <file-name>.java arg1 arg2将在执行阶段提供字符串参数arg1、arg2。
侧注-如果该文件包含多个具有标准main方法的类,则将执行源文件中的第一个顶层类,该类应包含标准公共静态contain (String[])方法的声明。
https://stackoverflow.com/questions/51935636
复制相似问题