2014-11-24 67 views
1

我有一個屬於2個不同包的同一個類。Java類加載

package x1.y1.Class 
packgage x2.y2.Class 

是否有可能,如果我是通過調用類加載器x1.y1.Classx2.y2.Class負荷呢?

+1

你的意思是不小心?或者這就是你想要達到的目標? – 2014-11-24 06:45:39

+0

yups ..意外..其他任何可能性 – vegeta 2014-11-24 06:46:16

+0

否..除非你做錯了,否則不會發生。 – TheLostMind 2014-11-24 06:48:25

回答

5

簡單地說,沒有(除非你無意中加載了錯誤的)。

類由他們的完全限定類名,其中包括包裝(如x1.y1.Class

4

不,這不可能發生,原因有二:

  • 的類加載器認定通過在正確的位置尋找類,
  • 即使您意外地將類放在錯誤的地方,類文件本身也會包含包名,並且會在類加載過程中對其進行檢查。

我只是試着故意這樣做,用文件替換爲p1/Foo.classp2.Foo,並收到以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: p1/Foo (wrong name: p2/Foo) 

如果你想做到這一點,你需要一個有意查看錯誤位置的類加載器,然後修改它加載的字節碼。