繁体   English   中英

调试'详细格式化程序'如何在eclipse中解析类?

[英]How does the debug 'Detail Formatters' resolve classes in eclipse?

在eclipse中,您可以在Preferences - > Java - > Debug - > Detail Formatters下设置自定义“Detail Formatters”,以便在调试时以自定义方式打印对象。 我想使用实用程序类使用格式化程序打印对象,如:

return com.foo.Bar.xzyToString(this);

其中xzyToString是Bar返回String的静态方法,但eclipse却抱怨它

'无法解析类型:com.foo.Bar.xzyToString'。 将“Bar”添加到项目构建路径不允许找到该类。 我如何/在何处更新eclipse用于解析详细格式化程序中的名称的路径?

详细格式化程序挂钩到Eclipse JDI框架并使用当前正在调试的类的类加载器。 因此,您只能使用正在运行的应用程序知道的类。

由于在调试时只需要实用程序类,因此可以将类添加到启动配置的类路径中(或将其直接添加到项目中)。 不幸的是,我不知道为所有发布自动执行此操作的方法。

在调用detail formatter之前,还需要加载该类。 如果它是您在应用程序中的其他位置使用的类,这通常不会成为问题,但如果您仅将其用于详细格式化,则始终会出现该错误。

您可以通过在格式化程序中加载类来解决此问题 - 将格式化程序更改为以下内容:

if ( Class.forName("com.foo.Bar") != null ) {
  return com.foo.Bar.xzyToString( this );
}
else {
  return "Could not load com.foo.Bar in detail formatter!";
}

请在return声明后给出部分。 例如对于StringBuffer尝试:

toString() + " (" + length() + ")"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM