在java中运行时更改代码

在java中运行时更改代码,java,jar,Java,Jar,有没有办法在运行时更改java的代码?我需要从jar中读取java文件,更改代码,重新编译并放入jar中。所有这些都应该在运行时完成。我不知道的部分是如何将java文件从jar文件中读取为java文件并更改代码大多数情况下它都不起作用,因为您必须在更改后重新加载jar。您可以更具体一点/提供示例吗?我想您应该解释您的最终目标,而不是机制。可能有一种比重新编译类更好的方法来做你想做的事情。这并不意味着拖拉,但你不知道的部分是最简单的部分。在运行时用新的字节码替换旧的字节码将是一个艰难的过程。可能是

有没有办法在运行时更改java的代码?我需要从jar中读取java文件,更改代码,重新编译并放入jar中。所有这些都应该在运行时完成。我不知道的部分是如何将java文件从jar文件中读取为java文件并更改代码

大多数情况下它都不起作用,因为您必须在更改后重新加载jar。您可以更具体一点/提供示例吗?我想您应该解释您的最终目标,而不是机制。可能有一种比重新编译类更好的方法来做你想做的事情。这并不意味着拖拉,但你不知道的部分是最简单的部分。在运行时用新的字节码替换旧的字节码将是一个艰难的过程。可能是类似于JRebel的东西,它可能会根据您的需求得到您。现在已经没有java文件了。jar只包含一个类文件。有许多方法可以更改JVM在运行时运行的代码。更详细地了解你想改变什么样的事情可能会有所帮助。例如,您可能只需要一个插件架构。代码在插件编译时更改,但在主应用程序编译后更改。您可能需要在运行时修改字节码,正如BCEL和ASM所允许的那样。或者您可以使用Java6编译器类。