答案 0 :(得分:4)
尽管answer by you包含正确的信息。只需将其简单化,就可以使用java
从JDK11开始执行文件,例如在MacOS上
.../jdk-11.jdk/Contents/Home/bin/java Sample.java
这将寻求并执行标准的 public static void main(String[] args)
方法。可以注意到(甚至是初学者)此方法接受类型为args
的{{1}},因此传递了在原始命令行中位于源文件的名称之后的参数到编译后的类执行时。因此,以下命令
String
在执行阶段将提供字符串参数.../jdk-11.jdk/Contents/Home/bin/java <file-name>.java arg1 arg2
,arg1
。
附带说明 -如果文件包含具有标准主要方法的多个类,则在源文件中找到的第一个顶级类应包含标准的声明执行公共静态void main(String [])方法。
答案 1 :(得分:3)
$ java Example.java data.txt
或(使用#!
):
$ ./example data.txt
工作示例here。
考虑一个单文件程序来打印文件中的行:
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]
}
}
假设代码在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
用法是:
./example data.txt