Tag: 动态类加载器

动态重新加载jar文件内容

我的应用程序的类路径中有一个jar文件。 在运行时,我向jar文件添加新类,有时还修改现有类的字段/方法。 目前我正在使用URLClassLoader动态加载类。 动态添加的新类正确加载,我可以在运行时使用它们。 但它无法重新加载在运行时修改的现有类。 我阅读了许多文章,声明我们需要显式处理重新加载,因为在类的所有引用都被销毁之前,不会重新加载一次加载的类。 此外,我尝试了我找到的示例代码,但没有一个工作。 任何人都可以建议我适当的重新加载方法吗? 任何示例代码都将受到高度赞赏。

动态加载具有不同包名称的java中的类

是否可以在Java中加载类并“伪造”类的包名称/规范名称? 我尝试这样做,显而易见的方法,但我在ClassDefNotFoundException得到一个“类名不匹配”的消息。 我这样做的原因是我正在尝试加载一个在默认包中编写的API,以便我可以直接使用它而不使用reflection。 代码将在表示包和包名称导入的文件夹结构中针对类进行编译。 即: ./com/DefaultPackageClass.class // … import com.DefaultPackageClass; import java.util.Vector; // … 我目前的代码如下: public Class loadClass(String name) throws ClassNotFoundException { if(!CLASS_NAME.equals(name)) return super.loadClass(name); try { URL myUrl = new URL(fileUrl); URLConnection connection = myUrl.openConnection(); InputStream input = connection.getInputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int data = input.read(); while(data != -1){ buffer.write(data); data = […]