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
каталог с банкой классов, которые вы хотите.
Я не могу сказать, нарушают ли эти параметры лицензионное соглашение или нет.