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的执行行(执行路径)的行号吗?
答案 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可能会对您有所帮助。