Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java或Groovy以编程方式修改Java源代码_Java_Groovy - Fatal编程技术网

使用Java或Groovy以编程方式修改Java源代码

使用Java或Groovy以编程方式修改Java源代码,java,groovy,Java,Groovy,为了自动化遗留项目中的某些手动任务,我需要从java或groovy代码中修改现有的java文件 我不想使用正则表达式,因为在我看来它既不快速也不干净 我找到了javassist和srcgen4javassist。第一种方法允许我根据自己的意愿修改源代码,但只编写字节码,没有任何注释和注释。对于第二个类,我没有设法读取一个不是用srcgen4javassist本身创建的现有类 有没有一个优雅的解决方案,或者我需要咬紧牙关使用Regex吗?您可以使用类似eclipse的方法解析代码,在这一点上,您可

为了自动化遗留项目中的某些手动任务,我需要从java或groovy代码中修改现有的java文件

我不想使用正则表达式,因为在我看来它既不快速也不干净

我找到了javassist和srcgen4javassist。第一种方法允许我根据自己的意愿修改源代码,但只编写字节码,没有任何注释和注释。对于第二个类,我没有设法读取一个不是用srcgen4javassist本身创建的现有类


有没有一个优雅的解决方案,或者我需要咬紧牙关使用Regex吗?

您可以使用类似eclipse的方法解析代码,在这一点上,您可以使用xpath样式找到替换目标,但这需要大量的工作

你也可以考虑用注释来标记替换区域,但是(至少在我看来)API是麻烦的。 您可以将regexp与源代码中的一些标记组合在一起,例如

//START REPLACEMENT-TARGET 
...code to be edited/replaced
//END REPLACEMENT TARGET

这将使您的regexp目标更加安全。

您想做什么?举个例子会有帮助。我需要自动编辑源文件,新创建的行与原始手动编写的行看起来相同。我想在类似字段组中添加一个新字段。我想添加一个新的getter来返回字段值。由于我采用了regexp路径。这是目前最直接的方法。