2012-11-02 24 views
0

我使用的负载动态使用代码在here适当的SWT库。的Java Method.invoke():如果指定了有效的JAR如何检查?

Method addUrlMethod = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); 
addUrlMethod.setAccessible(true); 
.... 
URL swtFileUrl = new URL("rsrc:" + swtFileName); 
addUrlMethod.invoke(classLoader, swtFileUrl); 

现在只是实验更改swt_win32_x86.jar文件到一个空文件。但是,行 “addUrlMethod.invoke器(classloader,swtFileUrl);”不会抛出任何异常。

这是为什么?以及如何检查swtFileName是否是有效的SWT库文件?

回答

1

为什么会这样呢?

如果你看看URLClassLoader.addURL,它只会将参数添加到要搜索的URL列表中。

如何检查swtFileName是否是有效的SWT库文件?

尝试加载它应该有一个类:

try { 
    classLoader.loadClass("org.eclipse.swt.SWT"); 
} catch (ClassNotFoundException e) { 
    ... 
} 
+0

阿列克谢,你的意思的Class.forName( “”)?我在ClassLoader类中找不到任何classForName。 –

+0

的Class.forName( “org.eclipse.swt.SWT中”);似乎为我工作 –

+1

对不起,我的意思是'classLoader.loadClass'。 'Class.forName'应该也可以。 –

相关问题