JEP 330描述了 JDK 11 中的一项新功能,用于在 Java 中启动单文件程序。我试过了:
$ ./Example.java
但它不起作用。正确的用法是什么?
$ java Example.java data.txt
Run Code Online (Sandbox Code Playgroud)
或(与#!):
$ ./example data.txt
Run Code Online (Sandbox Code Playgroud)
工作示例在这里。
考虑一个单文件程序来打印文件中的行:
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]
}
}
Run Code Online (Sandbox Code Playgroud)
假设代码位于Example.java且java位于 上PATH,则用法为:
java Example.java data.txt
javac步骤(!)假设代码位于文件 中,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
Run Code Online (Sandbox Code Playgroud)
用法是:
./example data.txt
尽管您的答案包含正确的信息。简而言之,java从 JDK11 开始就可以简单地执行文件,例如在 MacOS 上
.../jdk-11.jdk/Contents/Home/bin/java Sample.java
Run Code Online (Sandbox Code Playgroud)
这将寻找并执行标准public static void main(String[] args)方法。人们可以注意到(即使是初学者)该方法接受argstype ,因此在执行时,原始命令行中源文件名称String后面放置的参数将传递给已编译的类。因此以下命令
.../jdk-11.jdk/Contents/Home/bin/java <file-name>.java arg1 arg2
Run Code Online (Sandbox Code Playgroud)
将在执行阶段arg1提供字符串参数。arg2
旁注- 如果文件包含多个具有标准 main 方法的类,则执行源文件中找到的第一个顶级类,该类应包含标准public static void main(String[])方法的声明。
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |