启动单文件源代码程序
单文件源代码程序执行
在 JDK 11 中,Java 引入了使用 java
启动器启动单文件源代码程序的功能,无需先显式编译源代码。这是通过 java
启动器自动调用编译器并将编译后的代码存储在内存中来实现的。这对于学习如何使用 Java 或探索 Java API 中的新功能非常有用,无需经历编译和执行代码的繁琐步骤。有几种方法可以使用此功能,以及一些限制和需要注意的事项。
执行您的第一个单文件源代码程序
要执行单文件源代码程序,源文件中定义的第一个类必须包含 public static void main(String[])
,如下面的 HelloWorld
中所示
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
从命令行,HelloWorld
可以使用以下命令启动(假设文件名为 HelloWorld.java
)
$ java HelloWorld.java
传递参数
参数也可以像正常编译的类一样传递,因此在以下示例中
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello " + args[0]);
}
}
传递参数可以像这样完成
$ java HelloJava.java World!
同一文件中的多个类
如果需要出于封装目的,可以在同一个源文件中定义多个类,例如以下示例
public class MultipleClassesInSameFile {
public static void main(String[] args) {
System.out.println(GenerateMessage.generateMessage());
System.out.println(AnotherMessage.generateAnotherMessage());
}
}
class GenerateMessage {
static String generateMessage() {
return "Here is one message";
}
}
class AnotherMessage {
static String generateAnotherMessage() {
return "Here is another message";
}
}
执行时
$ java MultipleClassesInSameFile.java
将输出
Here is one message
Here is another message
引用 JDK 类和非 JDK 类
属于核心 JDK 的类无需添加到类路径即可执行。因此,以下示例引用了 Scanner
和 MatchResult
类,只需使用 java
启动器即可执行
import java.util.Scanner;
import java.util.regex.MatchResult;
public class ScannerExample {
public static void main(String... args) {
String wordsAndNumbers = """
Longing rusted furnace
daybreak 17 benign
9 homecoming 1
freight car
""";
try (Scanner scanner = new Scanner(wordsAndNumbers)) {
scanner.findAll("benign").map(MatchResult::group).forEach(System.out::println);
}
}
}
要启动
$ java ScannerExample.java
但是,以下示例引用了 RandomUtils
,它是 Apache Commons Lang 的一部分,需要在启动时将 commons-lang.jar
添加到类路径
import org.apache.commons.lang3.RandomUtils;
public class ReferenceNonJDKClass {
public static void main(String[] args) {
System.out.println(RandomUtils.nextInt());
}
}
要启动
java -cp /path/to/commons-lang3-3.12.0.jar ReferenceNonJDKClass.java
作为 Shebang 文件执行
在类 Unix 操作系统上,单文件源代码应用程序也可以像脚本一样作为 Shebang 文件启动。在 Java 源文件中,将 path/to/java/home --source <version>
作为文件的第一行添加,如下面的示例所示
#!/path/to/your/bin/java --source 16
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello " + args[0]);
}
}
该文件不能以 .java
作为文件扩展名,并且还必须是可执行的 chmod +x
。有了它,就可以使用以下命令启动
./HelloJava
上次更新: 2021 年 9 月 14 日
返回教程列表