我知道这是非常通用的,但是有没有办法让我运行一个 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/