Java 创建新的类加载器以重新加载类
每次调用我的方法时,我都要创建一个新的Java 创建新的类加载器以重新加载类,java,class,build,Java,Class,Build,每次调用我的方法时,我都要创建一个新的ClassLoader 因此,我可以在不退出程序的情况下重新加载类 如何更新由ClassLoader加载的class也是一个解决方案 我如何才能做到这一点?我在这里找到了一个很好的解释性答案: 在我的例子中,重要的是有两个二进制文件夹: 一个用于测试用例,一个用于程序源 引述: URL[] urls = null; try { // Convert the file object to a URL File dir = new File(S
ClassLoader
因此,我可以在不退出程序的情况下重新加载类
如何更新由ClassLoader
加载的class
也是一个解决方案
我如何才能做到这一点?我在这里找到了一个很好的解释性答案: 在我的例子中,重要的是有两个二进制文件夹: 一个用于测试用例,一个用于程序源 引述:
URL[] urls = null;
try {
// Convert the file object to a URL
File dir = new File(System.getProperty("user.dir")
+File.separator+"dir"+File.separator);
URL url = dir.toURL(); // file:/c:/almanac1.4/examples/
urls = new URL[]{url};
} catch (MalformedURLException e) {
}
try {
// Create a new class loader with the directory
ClassLoader cl = new URLClassLoader(urls);
// Load in the class
Class cls = cl.loadClass("MyReloadableClassImpl");
看到这个了吗
我认为这个博客可以满足您的需求。我用loadClass(“string”)加载一个JavaCompiler源代码编译类,然后用JUnitCore运行这个类。在那之后,我在*.java中编辑源代码,用JavaCompiler编译它,并希望再次重新加载它+1只需添加-此解决方案仅在重新加载的类没有任何方法删除/新类引用时有效。这种方法的问题是,如果有人忘记先添加依赖类,这可能会创建NoClassDefFoundError。最好的办法是在不完全停止应用程序的情况下重新加载所有类。