从我的java程序控制java程序的执行

时间:2012-09-04 04:43:42

标签: java code-coverage line-numbers

public class LineNum1 extends Thread{

    public synchronized void run()
         {
          try {
                Hello.main(null);
                System.out.println("Stack Trace of thread"+ this.currentThread().getName());
                System.out.println(this.currentThread().getStackTrace()[1].getLineNumber());
                System.out.println("End of Stack Trace");
               } catch (Exception e1) {
                    e1.printStackTrace();
               }
            }

     public static void main(String[] args) {

                LineNum1 t = new LineNum1();
                t.start();
            }
   }

我正在开发代码覆盖率工具。

使用上面的程序我从这里执行Hello.java。有没有什么方法可以控制Hello.java?

或者为了让我的生活更简单,我可以获得Hello.java的执行行(执行路径)的行号吗?

3 个答案:

答案 0 :(得分:2)

您想要使用Java调试接口。它是用于编写调试器等Java工具的Java库。它将允许您逐步完成程序,查询行号和其他内容。

有一个简单的演示应用程序称为跟踪,它可以完成你想要的大部分工作:http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/trace.html

如果你有时间阅读它,那里有很多文档: http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/index.html

答案 1 :(得分:1)

您可以将第二个Java类作为Process执行,并自己阅读输出。

答案 2 :(得分:0)

我尚未完全完成代码覆盖。但我使用字节码检测来检测方法,因此我得到了我访问过的所有方法的日志。这Javassist Turtorial可能会对您有所帮助。