我想得到eclipse中一些方法的调用链报告,所以按Ctrl++打开方法调用层次视图,按numpad_multiply键展开所有节点Alt。H
问题是我需要点击每个节点才能知道它属于哪个项目。
有什么方法或插件可以获取报告吗?
(我为 Web 开发人员使用 Eclipse 3.5 Galileo Java EE IDE。感谢您的任何建议)
我想得到eclipse中一些方法的调用链报告,所以按Ctrl++打开方法调用层次视图,按numpad_multiply键展开所有节点Alt。H
问题是我需要点击每个节点才能知道它属于哪个项目。
有什么方法或插件可以获取报告吗?
(我为 Web 开发人员使用 Eclipse 3.5 Galileo Java EE IDE。感谢您的任何建议)
回答我的问题,我希望这对某人有所帮助。(这不是一个聪明的方法,但它对我有用。)
准备:
Ctrl+Alt+H 打开方法调用层次视图,按 numpad_multiply 键展开所有节点。
Ctrl+A 选择所有节点。
复制完全限定的类名,并将其保存到某处的文件中(例如 c:\tmp.txt)
删除上述文件中的所有方法名称。
例子:
com.test.Class1.method1(Long, String)-> com.test.Class1
资源:
在同一工作区中创建一个新项目(java 类型)
将目标项目引用添加到新项目
循环上述文件的每一行(例如c:\ tmp.txt),最终使用此代码获取类位置:
/**
* Get class file location
* @param path : example: com.test.Class1
* @return : example: /D:/workspace/project/target/com/test/Class1.class
* @throws ClassNotFoundException
*/
private static String getFileLocationByClassName(String path)
throws ClassNotFoundException {
if (path == null || path.length() == 0)
return "";
Class<?> forName = Class.forName(path);
URL resource = forName.getResource(forName.getSimpleName() + ".class");
if (!"file".equalsIgnoreCase(resource.getProtocol()))
throw new IllegalStateException("Class is not stored in a file.");
return resource.getPath();
}
请注意,[project/target] 作为回报是项目名称,仅此而已。
在 Kepler 上,窗口右侧有一个向下箭头(称为“查看菜单”),您可以在其中选中“显示文件名”