java类路径 启动路径_JVM启动后Java类路径是否最终?

由于没有人可以给出明确答案,也没有链接到文档的相应部分,我自己提供了一个答案。不过,我想感谢所有试图回答这个问题的人。

简答:

JVM启动时,类路径不是最终的。

您实际上可以在JVM启动后将类放在类路径中,并且它们将被加载。

长答案:

为了回答这个问题,我在user unknowns建议之后,写了一个小测试程序。

基本思想是要有两个类。一个是实例化第二类的主要类。在启动时,第二个类不在类路径上。 cli程序启动后,将提示您按Enter键。在输入之前,请复制类路径上的第二个类。按进入后,第二个类被实例化。如果类路径在JVM启动时是最终的,这将抛出异常。但是没有。所以我假设类路径在JVM启动时不是最终的。

以下是源代码:

JVMTest.java

package jvmtest;

import java.io.Console;

import jvmtest.MyClass;

public class JVMTest {

public static void main(String[] args) {

System.out.println("JVMTest started ...");

Console c = System.console();

String enter = c.readLine("Press Enter to proceed");

MyClass myClass = new MyClass();

System.out.println("Bye Bye");

}

}

MyClass.java

package jvmtest;

public class MyClass {

public MyClass() {

System.out.println("MyClass v2");

}

}

文件夹结构如下所示:

jvmtest/

JVMTest.class

MyClass.class

我用这个命令启动了cli程序:

> java -cp /tmp/ jvmtest.JVMTest

你可以看到我在/ tmp / jvmtest中有我的jvmtest文件夹。你显然必须根据你把课程放在哪里来改变。

所以这里是我执行的步骤:

>确保只有JVMTest.class在jvmtest中。

>使用上面的命令启动程序。

只要确保按Enter键。你会看到一个异常告诉你没有找到任何课程。

>现在再次启动程序。

>程序启动后,系统提示您按Enter键将MyClass文件复制到jvmtest文件夹中。

>按回车。你应该看到“MyClass v1”。

补充笔记:

当我将MyClass类打包在一个jar中并运行上面的测试时,这也是有效的。

我在Macbook Pro上运行Mac OS X 10.6.3

> Java -version

结果是:

java version "1.6.0_20"

Java(TM) SE Runtime Environment (build 1.6.0_20-b02-279-10M3065)

Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01-279, mixed mode)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值