如何从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 。 有一个详细的解释如何将此选项与良好(和工作)的代码示例一起使用。