Как переписать классы из JDK? - PullRequest
3 голосов
/ 29 января 2011

Я пытаюсь изменить некоторые классы из open jdk, поэтому я создаю ту же структуру пакета, что и у классов open jdk, и я изменяю классы, используя netbeans.Когда я строю проект, если что-то не так в перезаписанных классах, я получаю ошибку.Если успешно построить мой проект, кажется, что изменения от моих классов не учитываются приложением, вместо этого используются открытые классы jdk.Любая идея, как я могу использовать мои классы, а не те из openjdk?

Пример:

, если я создаю класс sun.net.www.protocol.https.HttpsURLConnectionImpl в моем проекте, и я делаю в нем некоторые изменения, я строю проект, но когда я запускаю его приложение, мои изменения не появляются, как используется оригинальный класс из openjdk, а не мой класс.

Ответы [ 4 ]

6 голосов
/ 29 января 2011

вам нужно изменить путь к классу начальной загрузки java -X для получения дополнительной информации, вот только та опция, которая вам нужна.

-Xbootclasspath/p:

И удачи вам во взломе источника !!

2 голосов
/ 29 января 2011

Это то, для чего предназначены классы расширения.

Подробнее см. http://download.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html#javalauncher. По сути, вы либо отбрасываете jar-файлы в папку ext, либо указываете в системных свойствах, что вам нужно, перед classpath, переопределяющим стандартные классы Java.

0 голосов
/ 08 марта 2017

Если есть кто-то, у кого есть проблемы с использованием опции -Xbootclasspath, я настоятельно рекомендую следующую страницу, которую я нашел некоторое время назад: https://github.com/adrianmalik/hotspot-overriding-jdk. Подробно объясняется, как использовать эту опцию с хорошим (и работающим) примером кода.

0 голосов
/ 29 января 2011

Вы должны создать свой класс в своем собственном пакете, и приложение, которое использует этот класс, вместо этого импортирует ваш класс.Таким образом, вы можете создать класс с именем HttpsURLConnectionImpl в пакете com.yourdomain.

Затем в коде приложения убедитесь, что вы импортировали:

  import com.yourdomain.HttpsURLConnectionImpl;

Тогда в вашем коде будет использоваться ваш собственный класс.

...