入力に基づいてJavaプログラムを動的にロードする必要があるという要件があります。すべてのJavaクラスファイルは、C:// Users / me / worksheet / File / bin /Encrypt/フォルダーに配置されます。このフォルダには、Class1.class、Class2.class、Class3.classの3つのクラスファイルがあります。
実行時にそれらを取得するために、私は以下のコードを使用しています:
package First;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class Main
{
public static void main(String[] args) {
// Say Class.class is the input file to be picked up.
String abc = "Class1.class";
try {
File file = new File("C:\\Users\\me\\workspace\\File\\bin\\Encrypt");
//convert the file to URL format
URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};
//load this folder into Class loader
ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass(abc);
System.out.println("cls.getName() = " + cls.getName());
cls.encrypt();
}
catch ( ClassNotFoundException | MalformedURLException e) {
e.printStackTrace();
}
}
}
私はここで以下の問題に直面しています:
- 上記のコードはエラーを示しています:.NoClassDefFoundError:Class1 ?? パスですべてのタイプの-/、\、//、\を使用しました。
- Class1ファイルでメソッドsum()を呼び出すにはどうすればよいですか?