java - 具有单个类文件的 JVM Xbootclasspath

标签 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]

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

最佳答案

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

尝试一下

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

顺便说一句http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

Do not deploy applications that use this option to override a class in rt.jar because this violates the Java Runtime Environment binary code license.

另一种方法是提供一个代理来检测 Throwable 类。例如将其替换为您自己的。

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

我不能说这些选项是否也违反许可协议(protocol)。

关于java - 具有单个类文件的 JVM Xbootclasspath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100743/

相关文章:

java - 如何从不是由spring创建的对象访问spring bean

java - 数组中的手动倒序 (Java)

java - 使用MyBatis Generator,当提供NULL值时如何为列指定默认值?

Java:为什么存在 MaxPermSize?

java - 为什么当操作系统代表时java会承担线程切换的开销

java - 反射(reflect)通用类

java - ECS 容器中 JVM 内存增长超出限制

spring-boot - 在 catalina.bat 文件中设置属性与在 setenv.bat 文件中设置属性有什么区别

java - OpenJDK 中 JVM 参数列表中的 ":="表示什么?

java - 如何在java程序中设置JVM参数值