2012-01-26 23 views
1

我只是想玩jdk。就像在java.util等的某些實用程序中更改某些算法的實現一樣。我只是嘗試複製Treemap到一個新的類,但在同一個包java.util。但是,當我嘗試使用我的複製類,我得到什麼是最簡單的方法來改變和玩jdk代碼

Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.util 
at java.lang.ClassLoader.preDefineClass(Unknown Source) 
at java.lang.ClassLoader.defineClassCond(Unknown Source) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$000(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at Test.main(Test.java:7) 

但由於樹形圖在java.util中使用一些包訪問的東西從其他類我不能也更改包。

我jst告訴我做了什麼。但請告訴我是否有更簡單的方法來更改某些部分的jdk實現並使用修改的代碼?

回答

1

使用-Xbootclasspath/p:mydir可以將類加載到引導類加載器中,而不是系統類。 (p是前置的。)

如果您想製作類的副本而不是替換它們,那麼它們將需要超出java.如果依賴於包私有訪問,則需要複製其他課程(或使其在-Xbootclasspath/p:中公開)。包層次結構。

+1

剛剛添加這個,但你擊敗了我!我相信它是-Xbootclasspath。我使用了一個名爲「jdkplay」的獨立Eclipse項目,並將任何實驗JDK複製的Java文件放入其中,顯然是在正確的包中。然後在運行配置文件中使用開關:-Xbootclasspath/p:d:/ projects/jdkplay/bin。它工作的一種享受。在Swing類中添加調試/日誌記錄代碼和邏輯非常方便。 – davidfrancis

+0

我第二次正確輸入'-Xbootclasspath/p:'...... –

相關問題