尝试从.jar加载类时出现ClassCastException

时间:2017-01-09 17:14:26

标签: java eclipse jar classloader

我试图在运行时从.jar文件启动一个应用程序。所以我按照这个帖子中的代码: How to load a jar file at runtime

但是我遇到了这个错误:

Exception in thread "main" java.lang.ClassCastException: class net.sf.latexdraw.LaTeXDraw
    at java.lang.Class.asSubclass(Unknown Source)
    at LatexLauncher.<init>(LatexLauncher.java:17)
    at LatexLauncher.main(LatexLauncher.java:26)

这是代码,与上面的帖子完全相同:

File path = new File("pathToMyJAR/lib/LaTeXDraw.jar");
System.out.println(path.exists()); //return true
ClassLoader loader = URLClassLoader.newInstance(
        new URL[] { path.toURI().toURL() },
        getClass().getClassLoader()
);
Class<?> clazz = Class.forName("net.sf.latexdraw.LaTeXDraw", true, loader);
Class<? extends Runnable> runClass = clazz.asSubclass(Runnable.class);
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();
doRun.run();

LatexLauncher构造函数中的上述代码。抛出错误的一行是:

Class<? extends Runnable> runClass = clazz.asSubclass(Runnable.class);

这是一个Eclipse项目,我要运行的.jar文件位于lib文件夹中。我想要运行的所需jar(LaTeXDraw)位于项目的lib/lib/文件夹中。我不知道如何解决这个问题。

我的最终目标是启动.jar应用程序并让Robot类在UI上执行操作以进行测试。

欢迎任何帮助, 谢谢你的时间

0 个答案:

没有答案