我的问题是,我在 Java6 上工作的代码不再工作了。由于我的应用程序需要在运行时加载 jar(插件),所以我编写了一个从 URLClassLoader 派生的简单类,如下所示
public class MyClassLoader extends java.net.URLClassLoader {
/** Creates a new instance of URLClassLoader */
public MyClassLoader(java.net.URL url)
{
super(new java.net.URL[]{url},ClassLoader.getSystemClassLoader());
}
public void addURL(java.net.URL url)
{
super.addURL(url);
}}
因此,如果我想加载一个 jar,我只需调用 addURL(pathToJar) 并通过加载该类
Class.forName(myClass, true, myClassLoader)
这就像在 Java6 上运行的魅力。现在我决定在 Java7 中制作一个自包含的 Java 应用程序。当我启动应用程序时,jar 也会在运行时加载,但如果里面有一个类派生自类路径内的类(不在插件 jar 中),我会得到一个 ClassCastException。
所以我猜Java7发生了一些变化。目前我在 OSX 上使用 Java7_u13。任何人都可以给我一个提示我应该做什么,以恢复旧的行为吗?搜索网络并没有给我任何帮助。
提前谢谢了。
问候,-克里斯-