java将类添加到Swing包结果是一个可见函数上的IllegaAccessError
我正在使用与其他Swing小部件相同的结构/样式创建一个新的小部件。为此,我将我的UI类放在javax中。摆动普拉夫。基本的作为UI实现的一部分,我使用javax。摆动普拉夫。基本的LazyActionMap类。Eclipse认为它是可见的,因为它有相同的包名,但是在运行时我得到了一个java。lang.IllegalAccessError异常(可能在运行时不可见)
看起来,即使我给了我的类相同的包名,Eclipse也认为它们在同一个包中,但在运行时它们不是
我有没有做错什么?我之所以尝试查看内部库类,是因为对于小部件的原型,我正在重新使用JSlider UI代码。在未来,我将过渡到从头开始绘制滑块
# 1 楼答案
通过不同的类加载器加载的类被认为属于不同的包。在编译时,编译器将不知道您将如何部署,因此看不到错误。您可以使用
-Xbootclasspath/a:
将代码作为系统类添加,但这是非常顽皮的,您不应该这样做您应该将自己的类放在自己的包中,远远超出
javax
java.*
类甚至不会被非引导类装入器装入