Tag: 类加载器

在运行时更新JAR

如果jar在JVM中运行,则可以卸载当前运行的Jar并将其从系统中删除。 下载新版本并使用与最后一个Jar相同的名称重命名它,然后初始化新的Jar,在JVM中创建Jar的无缝更新。 甚至可以指示JVM执行此操作吗? 甚至可以在运行时更新Jar吗?

文件系统上的哪个地方是我的Java类加载的?

我认为这是每个Java程序员遇到的情况,如果他们做得足够长的话。 您正在进行一些调试并对课程进行更改。 当你重新运行程序时,这些更改似乎没有被提取,而是旧的类似乎仍在运行。 你清理和重建一切,同样的问题。 有时,这可以归结为类路径问题,同一个类在类路径上不止一次,但似乎没有一种简单的方法来确定加载的类来自哪里…… 有没有办法找到加载的类的文件路径? 如果从.class文件或.jar文件加载类,则.jar 。 有任何想法吗?

如何保护/加密Java类?

前段时间,在我的工作中,我需要保护一些课程,以防止其他人阅读代码。 为此,我创建了一个EncryptedClassLoader,它加载了以前加密的类,并且还可以加载普通(未加密)类。 以这种方式工作有点复杂,并且也进行测试(编译,然后加密,然后解密)。 是否有任何免费的框架可以做我需要的,并且易于处理? 我的意思是,不仅混淆,而且还加密文件,所以没有人可以读取或调试这部分代码。 我可以很容易地更改加密密钥(在我的应用程序中,它是硬编码的)。 提前致谢。

URLClassLoader和package-private方法的可访问性

我有一个类Formula ,位于javaapplication4包中,我使用URLClassLoader加载。 但是,当我从位于同一个包中的另一个类Test1调用它时,我无法访问其具有默认访问修饰符的方法(我可以访问公共方法)。 我得到以下exception: java.lang.IllegalAccessException:类javaapplication4.Test1无法使用修饰符“”访问类javaapplication4.Formula的成员 如何从同一个包中访问在运行时加载的类的包私有方法? 我想使用不同的类加载器是一个问题,但不确定为什么(我已经设置了URLClassLoader的父级)。 SSCCE再现问题(Windows路径) – 我想问题是在loadClass方法中: public class Test1 { private static final Path TEMP_PATH = Paths.get(“C:/temp/”); public static void main(String[] args) throws Exception { String thisPackage = Test1.class.getPackage().getName(); String className = thisPackage + “.Formula”; //javaapplication4.Formula String body = “package ” + thisPackage + “; ” + “public class Formula { […]

使用ClassLoader和Class.forName加载类之间的区别

以下是2个代码段 第一个使用ClassLoader类来加载指定的类 ClassLoader cls = ClassLoader.getSystemClassLoader(); Class someClass = cls.loadClass(“TargetClass”); 第二个使用Class.forName()来加载指定的类 Class cls = Class.forName(“TargetClass”); 上述方法之间有什么区别。 哪一个用于哪个目的?

Java动态加载类

我试图动态地将类加载到组件中。 我正在使用文件选择器来选择将要加载的.JAR文件,然后使用选项窗格来获取类的名称。 我已经在互联网上搜索如何将java文件转换为URL以便在URLClassLoader中加载它我已经提出: File myFile = filechooser.getSelectedFile(); String className = JOptionPane.showInputDialog( this, “Class Name:”, “Class Name”, JOptionPane.QUESTION_MESSAGE); URL myUrl= null; try { myUrl = myFile.toURL(); } catch (MalformedURLException e) { } URLClassLoader loader = new URLClassLoader(myUrl); loader.loadClass(className); 我现在收到一个’无法找到符号’错误,将URL加载到URLClassLoader中

包含Jars的Jars中的类的替换系统类加载器

到目前为止,我看到的自定义ClassLoader的示例涉及子类化URLClassLoader,并使用该特定实例来加载资源中的类。 我徒劳地试图寻找替换SystemClassLoader的替代方法,以便可以为不在类路径中的类查询我的ClassLoader。 我试过Thread.currentThread().setContextClassLoader ,但它似乎不起作用。 它甚至可能吗?