应用程序中有使用com.sun.java.swing.SwingUtilities2的组件,现在我知道不应该使用这个类,但它是系统中使用它的组件。
因此,由于它在Java6中不再可用,我得到了一个NoClassDefFoundError。我如何才能在不升级组件的情况下解决这个问题,因为我还不知道这是否可以选择。
发布于 2009-10-19 20:38:12
如果您完全没有其他选择,那么您应该准确地找出这个类在SwingUtilities2中使用的是什么,然后在您自己的SwingUtilities2中为该功能创建代理。然后,您可以将其粘贴到您自己的com.sun.java.swing包中,该包将与原始的包重叠,并且如果加载您的组件的同一个类加载器也知道SwingUtilities2,那么这个类加载器将看到另一个,您的应用程序将会工作。
根据组件是什么,以及它在SwingUtilities2之外使用了什么,这可能比升级甚至重写它要困难得多。
发布于 2009-10-19 20:30:53
达姆!这就是为什么您应该注意那些令人讨厌的警告,告诫您不要依赖JVM的内部结构!
发布于 2009-10-19 20:45:16
尽管如此,我不知道这是否可行。
尝试提取SwingUtilities2类并将其放入补丁jar中,将此jar包含在类路径中。希望在你改变源码之前,这个方法能正常工作。
https://stackoverflow.com/questions/1590923
复制相似问题