如何从jdk覆盖类?

我正在尝试从open jdk更改一些类,所以我创建了与open jdk类相同的包结构,并且我正在使用netbeans更改类。 当我正在构建项目时,如果在覆盖的类中出现问题,我会收到错误。 如果成功构建我的项目,似乎应用程序不会考虑我的类的更改,而是使用open jdk类。 知道如何使用我的课程而不是openjdk的课程?

例:

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

你需要更改bootstrap类路径java -X以获取更多信息,这里只是你需要的选项。

-Xbootclasspath/p:

并祝你好运!

这是扩展类的目的。

有关详细信息,请参阅http://download.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html#javalauncher 。 Basicall你可以在ext文件夹中删除jar,或者在类路径覆盖标准Java类的前面用系统属性指示你想要的东西。

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

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

  import com.yourdomain.HttpsURLConnectionImpl; 

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

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

Interesting Posts