実行時にクラスを生成するプログラムがあります(変数と関連するgetterメソッドと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で作成ザ・クリプス - >)の完全修飾名をコピー
/guitest/generated/com/test/wam/business/wsobjects/Testclass.java
はここに何が間違っているのですか?あなたは次のように代わりにClass.forName(String name, boolean initialize, ClassLoader loader)
を使用する必要があなたのクラスをロードするために、特定のClassLoader
を使用したい場合は
"が、そのないクラスパスに"。それ。 –
'Class.forName'には' class'ファイルが必要ですが、 'Testclass.java'はありません。 – passion
私はこの場合どのようにすることができます - 私は生成されたJavaファイルとクラスファイルがありません? – Lasirana