首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java 11 (或更高版本)中启动单个文件程序?

如何在Java 11 (或更高版本)中启动单个文件程序?
EN

Stack Overflow用户
提问于 2018-08-20 17:16:49
回答 2查看 977关注 0票数 5

JEP 330描述了JDK 11中用于在Java中启动单个文件程序的一个新特性.我试过:

$ ./Example.java

但不起作用。正确的用法是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-08-20 17:16:49

简短版本:

代码语言:javascript
复制
$ java Example.java data.txt

或(与#!):

代码语言:javascript
复制
$ ./example data.txt

详细信息:

工作示例这里

考虑一个单独的文件程序来打印文件中的行:

代码语言:javascript
复制
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“行:

代码语言:javascript
复制
#!/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

票数 5
EN

Stack Overflow用户

发布于 2018-08-20 18:01:00

尽管你的回答包含正确的信息。只要尝试将其简化,就可以使用java从JDK11开始执行一个文件,例如在MacOS上执行。

代码语言:javascript
复制
.../jdk-11.jdk/Contents/Home/bin/java Sample.java

这将查找并执行标准的public static void main(String[] args)方法。可以注意到(甚至初学者),该方法接受args类型的String,因此在执行原始命令行中源文件的名称后放置的参数将传递给已编译的类。因此,以下命令

代码语言:javascript
复制
.../jdk-11.jdk/Contents/Home/bin/java <file-name>.java arg1 arg2

将在执行阶段提供字符串参数arg1arg2

侧注-如果该文件包含多个具有标准main方法的类,则将执行源文件中的第一个顶层类,该类应包含标准公共静态contain (String[])方法的声明。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51935636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档