我正在尝试从open jdk更改一些类,所以我创建了与open jdk类相同的包结构,并且我正在使用netbeans更改类。当我正在构建项目时,如果覆盖的类中出现错误,我会收到错误。如果成功构建我的项目,似乎应用程序不会考虑来自我的类的更改,而是使用开放的jdk类。我知道如何使用我的类而不是openjdk中的类?
示例:
如果我在我的项目中创建了类 sun.net.www.protocol.https.HttpsURLConnectionImpl 并且我在其中做了一些更改,我构建项目,但是当我运行他的应用程序时我的更改没有出现,就像使用openjdk的原始类一样,而不是我的班级。
答案 0 :(得分:6)
您需要更改bootstrap类路径java -X以获取更多信息,这里只是您需要的选项。
-Xbootclasspath/p:
祝你好运黑客!
答案 1 :(得分:2)
这是扩展类的目的。
有关详细信息,请参阅http://download.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html#javalauncher。 Basicall你可以在ext文件夹中删除jar,或者在类路径覆盖标准Java类的前面用系统属性指示你想要的东西。
答案 2 :(得分:0)
您应该在自己的包中创建您的类,并让使用此类的应用程序导入您的类。因此,您可以在com.yourdomain包中创建一个名为HttpsURLConnectionImpl的类。
然后在应用程序代码中确保导入:
import com.yourdomain.HttpsURLConnectionImpl;
然后在你的代码中使用你自己的类。
答案 3 :(得分:0)
如果有人使用-Xbootclasspath选项有问题,我绝对推荐以前找到的以下页面: https://github.com/adrianmalik/hotspot-overriding-jdk。 有一个详细的解释如何将此选项与良好(和工作)的代码示例一起使用。