带有单个类文件的JVM Xbootclasspath

时间:2014-09-29 13:09:16

标签: java jvm jvm-arguments

我想通过将自定义JVM Throwable类添加到bootclasspath来替换它自己的实现。我的论点如下:-Xbootclasspath/p:/home/skappler/Programming/**/target/classes/java/lang

lang文件夹包含Throwable.class

当我用-verbose:class开始我的程序时,我得到了:

[Path /home/skappler/Programming/**/target/classes/java/lang]
[Opened /opt/java/jre/lib/rt.jar]
...
[Loaded java.lang.Throwable from /opt/java/jre/lib/rt.jar]

为什么不使用我的自定义类?

1 个答案:

答案 0 :(得分:1)

当您提供目录时,它必须是一个基本目录,所有包都是子目录,就像使用classpath一样。例如如果JVM正在寻找java./lang.Throwable,它将在你给出的目录下查找java/lang/Throwable.class

尝试改为

-Xbootclasspath/p:/home/skappler/Programming/**/target/classes/

BTW http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

  

不要部署使用此选项的应用程序覆盖rt.jar中的类,因为这违反了Java Runtime Environment二进制代码许可证。

另一种方法是提供一个代理Throwable类的代理。例如用你自己的替换它。

另一种选择是添加一个lib/endorsed目录,其中包含您想要的类的jar。

这些选项是否也违反了许可协议,我不能说。