如何解决条件断点中无法解决的 class 编译错误?

How to resolve unresolvable class compilation error in a conditional breakpoint?

我正在将 eclipse oxygen 调试器附加到远程 java 应用程序。远程 java 应用程序的 class 路径上有 class org.example.Foo。为代码创建条件断点时

org.example.Foo.log("some message");
return false;

我收到一个错误 window,上面写着:

Conditional Breakpoint has compilation error(s).

Reason: org.example cannot be resolved

当我在条件断点中使用反射代码来调用 class Foo 上的静态方法时,它起作用了。

在将调试配置附加到远程 java 应用程序时,我尝试使用不同的项目进行调试,但 none 我已经尝试过。我尝试使用包含 org.example.Foo 的项目,还尝试使用包含正在部署的 servlet 的项目,我想在其中设置一个条件断点。

如何在条件断点内使用 class?

编辑: 我注意到条件断点编辑器的代码完成功能仅提供了一些存在于 eclipse 中的构建路径和 运行 应用程序中的 class 路径上的包,并且不提供任何 class 在显示的包中作为代码完成建议。

这里的问题是条件断点是如何编译的,以及应用程序中eclipse项目之间的依赖关系是什么。

该应用程序包含 3 个项目。表示可运行应用程序的项目 A 依赖于项目 BC,但是项目 BC 之间没有依赖关系。条件断点是为项目 B 中的 class 创建的。但是条件表达式中使用的 class 位于项目 C.

此设置将导致断点条件的编译错误,因为它是在项目 B 的上下文中编译的,因此不知道项目 C

在远程调试配置中选择的项目对此没有任何影响。也不可能通过条件断点的属性使用不同的项目。