Java 将类添加到Swing包——结果是在可见函数上出现IllegaAccessError
我正在使用与其他Swing小部件相同的结构/样式创建一个新的小部件。为此,我将UI类放在javax.swing.plaf.basic中。作为UI实现的一部分,我使用javax.swing.plaf.basic.LazyActionMap类。Eclipse认为它是可见的,因为它具有相同的包名,但是在运行时我得到一个java.lang.IllegalAccessError异常(可能在运行时不可见) 看起来,即使我给了我的类相同的包名,Eclipse也认为它们在同一个包中,但在运行时它们不是Java 将类添加到Swing包——结果是在可见函数上出现IllegaAccessError,java,eclipse,swing,exception,Java,Eclipse,Swing,Exception,我正在使用与其他Swing小部件相同的结构/样式创建一个新的小部件。为此,我将UI类放在javax.swing.plaf.basic中。作为UI实现的一部分,我使用javax.swing.plaf.basic.LazyActionMap类。Eclipse认为它是可见的,因为它具有相同的包名,但是在运行时我得到一个java.lang.IllegalAccessError异常(可能在运行时不可见) 看起来,即使我给了我的类相同的包名,Eclipse也认为它们在同一个包中,但在运行时它们不是 我有没有
我有没有做错什么?我之所以尝试查看内部库类,是因为对于小部件的原型,我正在重新使用JSlider UI代码。在将来,我将过渡到从头开始绘制滑块。通过不同的类加载器加载的类被认为属于不同的包。在编译时,编译器将不知道您将如何部署,因此看不到错误。您可以使用
-Xbootclasspath/a:
将代码添加为系统类,但这是非常顽皮的,您不应该这样做
您应该将自己的类放在自己的包中,而不是
javax
<代码>java.类甚至不会被非引导类装入器装入。通过不同的类装入器装入的类被认为属于不同的包。在编译时,编译器将不知道您将如何部署,因此看不到错误。您可以使用-Xbootclasspath/a:
将代码添加为系统类,但这是非常顽皮的,您不应该这样做
您应该将自己的类放在自己的包中,而不是javax
<代码>java.*类甚至不会被非引导类装入器装入。谢谢:)。这就解释了。我想我会避免这个特殊的临时黑客,似乎比它更麻烦。谢谢:)。这就解释了。我想我会避免这种特殊的临时黑客行为,似乎比它更麻烦。