java - 从单独运行的 jar 中获取字段

标签 java reflection

我知道这是非常通用的,但是有没有办法让我运行一个 jar,然后使用一个完全独立的 java 程序访问该正在运行的 jar 中的字段?我想最终设置已知 JTextField 的文本(我知道 JTextField 和类的名称)。我知道如果它全部作为一个单元运行,我如何通过反射来做到这一点,但我找不到任何方法来获取包含正在运行的 jar 实例的 Object ,而这正是您所需要的。

最佳答案

这不是最好的解决方案,但您可以覆盖正在运行的 JAR 的类路径上的类,而无需“实际”更改 JAR。

假设您要修改com.someone.elses.ClassA。我首先复制该类文件并反编译它,进行修改,然后将其重新编译为我自己的版本,但具有完全相同的类路径。

当您运行他们的 JAR 时,您可以在类路径上为您的类版本提供更高的优先级,以便加载它而不是他们的版本。

java -cp "your.class:their.jar" path.to.their.Main

然后该程序将与您修改后的类一起运行,使您可以访问所需的任何内容,并且可能从环境变量中读取。

关于java - 从单独运行的 jar 中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56993104/

相关文章:

java - JScrollPane 中的 Canvas 仅在滚动条处于最极端点时才重新绘制

java - 在 Java Bean validator 中使用类参数

c# - 使用运行时确定的类型参数调用泛型函数

c++ - Qt:给定 QObject 上设置的动态属性列表?

swift - 如何在 Swift 中使用反射获取所有类初始化器

java - 使用反射设置属性的属性

java - 仅覆盖 Java 对象的 equals() 方法

java - 如何向 JTree 添加间隙

java - 使用 Jsoup 从 HTML 表中提取数据

reflection - 如何在运行时发现所有包类型?