4

我正在尝试从开放 jdk 更改一些类,因此我正在创建与开放 jdk 类相同的包结构,并且我正在使用 netbeans 更改类。当我在构建项目时,如果覆盖的类有问题,我会遇到错误。如果成功构建我的项目,应用程序似乎没有考虑我的类的更改,而是使用开放的 jdk 类。知道如何使用我的课程而不是 openjdk 的课程吗?

例子:

如果我在我的项目中创建类sun.net.www.protocol.https.HttpsURLConnectionImpl并在其中进行一些更改,我会构建项目,但是当我运行他的应用程序时,我的更改不会出现,就像 openjdk 中的原始类一样是用的,不是我的课。

4

4 回答 4

6

您需要更改引导类路径 java -X 以获取更多信息,这正是您需要的选项。

-Xbootclasspath/p:

祝你好运破解源代码!

于 2011-01-29T19:44:25.517 回答
2

这就是扩展类的用途。

有关详细信息,请参阅http://download.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html#javalauncher。基本上,您要么将 jars 放在 ext 文件夹中,要么使用系统属性在覆盖标准 Java 类的类路径前面指示您想要的内容。

于 2011-01-29T17:35:10.457 回答
0

您应该在自己的包中创建您的类,并让使用此类的应用程序导入您的类。因此,您可以在包 com.yourdomain 中创建一个名为 HttpsURLConnectionImpl 的类。

然后在应用程序代码中确保您导入:

  import com.yourdomain.HttpsURLConnectionImpl;

然后在您的代码中将使用您自己的类。

于 2011-01-29T17:36:07.473 回答
0

如果有人在使用 -Xbootclasspath 选项时遇到问题,我绝对推荐我前段时间找到的以下页面: https ://github.com/adrianmalik/hotspot-overriding-jdk 。有一个详细的解释如何使用这个选项和一个好的(和工作的)代码示例。

于 2017-03-08T19:25:56.337 回答