簡體   English   中英

將類添加到Swing包中-結果是可見函數上的IllegalAccessError

[英]Adding a class to the Swing package — result is an IllegalAccessError on a visible function

我正在使用與其他Swing小部件相同的結構/樣式創建一個新的小部件。 為此,我將UI類放在javax.swing.plaf.basic中。 作為我的UI實施的一部分,我正在使用javax.swing.plaf.basic.LazyActionMap類。 Eclipse認為它是可見的,因為它具有相同的程序包名稱,但是在運行時我遇到了java.lang.IllegalAccessError異常(大概在運行時不可見)。

看起來,即使我給我的類指定了相同的程序包名稱,並且Eclipse也在考慮將它們放在同一程序包中,但在運行時卻不是。

我做錯了什么嗎? 我試圖對內部庫類具有可見性的原因是,對於小部件的原型,我正在重用JSlider UI代碼。 將來,我將過渡到從頭開始繪制滑塊。

通過其他類加載器加載的類被視為屬於不同的包。 在編譯時,編譯器不會知道您將如何部署,因此看不到錯誤。 您可以使用-Xbootclasspath/a:將代碼添加為系統類,但這很頑皮,您不應該這樣做。

您應該將自己的類放在您自己的包中,並且位於javax之外。 非引導類加載器甚至不會加載java.*類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM