指定JDK运行单个Java测试代码

1.场景:
想服务端获取IP地址的Java代码,本地macOS可以运行,服务器上没有全局安装Java,所以不能Javac x.java && java X执行。
又不能全局安装某个版本,这样可能会影响其他应用的运行。
2.操作:
解压下载的Java某个版本在某个路径下,如:/a/b/java-xx/
然后将待测试的x.java放在/a/b/目录下。
2.1 执行:

  1. JDK(1.0-10)
    /a/b/java-xx/javac /a/b/x.java
    /a/b/java-xx/java /a/b/x
    // 输出结果
  2. JDK(11++)
    /a/b/java-xx/java /a/b/x.java
    // 输出结果

Java编译知识

Java 从 Java 11 开始支持直接使用 java *.java 命令运行单个源代码文件,而无需先使用 javac 编译。这一特性被称为 Java 源代码直接执行功能(Shebang 支持),简化了开发流程。

特性说明

  1. 无需显式编译
    直接使用 java HelloWorld.java 即可运行代码,Java 会自动编译并执行,无需手动调用 javac

  2. 单文件限制
    该功能仅支持单个源代码文件,且文件中只能有一个 public 类,并且类名必须与文件名匹配。

  3. 依赖处理
    如果代码依赖其他类,需要通过 -cp 参数指定类路径,例如:

    java -cp lib/* MyMainClass.java
    

历史版本对比

Java 版本执行方式示例
Java 1.0-10必须先编译再运行javac HelloWorld.java
java HelloWorld
Java 11+支持直接执行源代码文件java HelloWorld.java

示例

假设我们有一个简单的 HelloWorld.java 文件:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java 11+!");
    }
}

在 Java 11+ 中,可以直接运行:

java HelloWorld.java  # 无需先编译

注意事项

  1. 版本要求
    必须使用 Java 11 或更高版本。可以通过以下命令检查版本:

    java --version
    
  2. 模块化代码限制
    如果代码使用了 Java 模块系统(module-info.java),则无法直接执行,仍需编译。

  3. 性能影响
    直接执行源代码会在每次运行时隐式编译,可能比预编译的.class文件稍慢。

如果你的 CentOS 系统使用的是 Java 11 或更高版本,可以尝试直接执行 .java 文件。但如果遇到依赖复杂的场景,建议还是使用传统的编译-运行流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值