我有一個程序,我在運行時生成類(僅包含變量和關聯的getters和setter方法)。後來我想填補課程。找不到類Class.forName(),但它存在
獲取類 - 我知道它的名稱,但它不在類路徑中 - 我試過.forName()但我總是得到一個ClassNotFoundException。
這是我的例子:
Exception in thread "main" java.lang.ClassNotFoundException: com.test.wam.business.wsobjects.Testclass
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at gui.Application.main(Application.java:94)
,代碼:
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
DynamicURLClassLoader dynamicURLClassLoader = new DynamicURLClassLoader(urlClassLoader);
dynamicURLClassLoader.addURL(new URL("file://C:\\dev\\Eclipse_was\\guitest\\generated"));
Class c = Class.forName("com.test.wam.business.wsobjects.Testclass");
Object classInstance = c.newInstance();
類加載器:
public class DynamicURLClassLoader extends URLClassLoader {
public DynamicURLClassLoader(URLClassLoader classLoader) {
super(classLoader.getURLs());
}
@Override
public void addURL(URL url) {
super.addURL(url);
}
}
的完全限定名稱的文件(用e創建clipse - >複製全合格的名稱)
/guitest/generated/com/test/wam/business/wsobjects/Testclass.java
這裏有什麼問題?
「但它不是在類路徑」。那。 –
'Class.forName'需要'class'文件,'Testclass.java'不是。 – passion
我能在這種情況下做什麼 - 我只有生成的java文件和沒有類文件? – Lasirana