2012-11-02 25 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'應該也可以。 –

相關問題