JVM Xbootclasspath с одним файлом классов

Я хочу заменить пользовательский класс JVM Throwable собственной реализацией, добавив его в путь загрузки. Мой аргумент выглядит так: -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 ответ

Решение

Когда вы даете каталог, он должен быть базовым каталогом, из которого все пакеты являются подкаталогом, как это делается с classpath. например, если 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 заявляет

Не развертывайте приложения, которые используют эту опцию для переопределения класса в rt.jar, потому что это нарушает лицензию двоичного кода Java Runtime Environment.

Альтернатива состоит в том, чтобы предоставить агента, который использует класс Throwable. например, заменяет его своим.

Другой вариант - добавить lib/endorsed каталог с банкой классов, которые вы хотите.

Я не могу сказать, нарушают ли эти параметры лицензионное соглашение или нет.

Другие вопросы по тегам