调试“详细格式化程序”在Eclipse中如何解析类?

5
在Eclipse中,您可以在“首选项” -> “Java” -> “调试” -> “详细格式化程序”下设置自定义的“详细格式化程序”,以在调试时以自定义方式打印对象。我想使用一个实用类来使用格式化程序打印对象,例如:
return com.foo.Bar.xzyToString(this);

xzyToString是Bar的一个静态方法,返回一个字符串,但是eclipse抱怨它无法解析类型:com.foo.Bar.xzyToString。将'Bar'添加到项目构建路径中并不能使该类被找到。我应该在哪里更新eclipse用于解析详细格式化程序名称的路径?

3个回答

3

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

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


1

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

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

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

尽管结果不为空,但我仍然遇到了相同的错误。也许这是OSGi的问题。 - Noumenon

-1

只需返回您return语句后面的部分。例如,对于StringBuffer,请尝试:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接