修改Java源代码文件并添加一些代码行

时间:2012-12-30 06:43:45

标签: java

我有一个java源文件(例如)

public class JTest{  
  public static void main (String arg[])  
    { . . . . . }  
  public mytestmethod()  
    {  
    for(i=0;i<10;i++)  
      System.out.println(i);  
    }    }  

我要做的是编写java程序,它可以修改上述java文件的源代码,而不是编译后的类文件。
在使用该程序进行修改之后,输出可能是。 。 。

public class JTest{  
  public static void main (String arg[])  
    { . . . . . }  
  public mytestmethod()  
    {  
    for(i=0;i<10;i++)  
      {                                    // { added to code  
         System.out.println(i);  
         System.out.println("ITERATION");  //new line added to code  
      }                                    // } added to code  
 }  }  

我认为我的问题现在很清楚了。这只是我任务的一个例子 可以使用哪些java库/库。

JAVASSIST 有助于修改类文件。它是一个非常简单方便的字节码编辑工具,但我必须编辑源代码。

2 个答案:

答案 0 :(得分:2)

看起来您必须进行完整的语法分析。 Java源代码本质上是自由格式文本,您不能依赖于换行符或间距,可以在代码中的任何位置插入注释。因此,所有使用字符串匹配或正则表达式解决问题的尝试最终都会失败。

像Javacc或antlr这样的工具可能对解析很有帮助。如果您搜索,您将找到这些工具的Java语法。

答案 1 :(得分:1)

一个简单的解决方案(没有使用javacc或类似的东西进行完全解析):

创建标记注释,例如

public void myMethod(bla blubb) {
//$myMethod entry$
stuff.going.on();
//$myMethod exit$
}

然后使用简单的字符串替换来注入您的代码。 (注射后保留标记物才能重新注射)。

执行完整的语法树解析然后注入代码+重写文件保持注释和格式化是一项非常复杂的任务。你需要一些时间。