Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 调试的步骤无法在自己的代码上运行:MyClass$Proxy$\u$$\ uWeldClientProxy.myMethod()行:不可用_Eclipse_Jboss7.x_Jboss Weld - Fatal编程技术网

Eclipse 调试的步骤无法在自己的代码上运行:MyClass$Proxy$\u$$\ uWeldClientProxy.myMethod()行:不可用

Eclipse 调试的步骤无法在自己的代码上运行:MyClass$Proxy$\u$$\ uWeldClientProxy.myMethod()行:不可用,eclipse,jboss7.x,jboss-weld,Eclipse,Jboss7.x,Jboss Weld,调试时,我将断点设置为从另一个自己的类调用方法的行。在进入步骤时,我在编辑器中找不到标题为MyClass$Proxy$\u$$\ uWeldClientProxy.myMethod行的源代码:stacktrace中不可用。 只要我带着断点回到课堂上,我就可以跳过这些 我在使用EclipseKeplerSR1、EclipseJunoSR2和JBoss7.1.1和7.2时遇到了同样的问题 这是自动生成代码的常见问题。你相信你的一个对象调用了你的另一个对象上的一个方法,我们称它为B,但是框架实际上已经

调试时,我将断点设置为从另一个自己的类调用方法的行。在进入步骤时,我在编辑器中找不到标题为MyClass$Proxy$\u$$\ uWeldClientProxy.myMethod行的源代码:stacktrace中不可用。 只要我带着断点回到课堂上,我就可以跳过这些


我在使用EclipseKeplerSR1、EclipseJunoSR2和JBoss7.1.1和7.2时遇到了同样的问题

这是自动生成代码的常见问题。你相信你的一个对象调用了你的另一个对象上的一个方法,我们称它为B,但是框架实际上已经用一个代理B'替换了你的对象B'它的类是自动生成的

代理B'与原始对象B具有相同的接口,并最终将调用转发给B

自动生成的代码会混淆调试器,但如果您盲目地单击“单步执行”,而没有看到源代码,则最终应该再次访问自己的代码。不用说这不方便

你能做的是

在您感兴趣的B类中设置断点 使用run而不是step-into 这应该会影响到你感兴趣的方法。您应该能够在堆栈中看到已调用的代理的自动生成方法


注意:即使您根本不使用任何框架,您也可能会遇到类似的问题。事实上,java编译器javac有时已经生成合成代码,尤其是for和

Weld已经为您的类创建了一个代理,您可能需要寻找解释。此创建的代理是调试时看到的MyClass$proxy$\u$$\ uWeldClientProxy。此代理最终将调用MyClass.myMethod,这是您的代码。在那里放置另一个断点并点击Run,或者转到该方法并在Eclipse中运行到line


如果MyClass是一个接口,并且您不知道将实际调用哪个实现,那么这将是一个问题;好了,用蛮力来营救吧,在每一次修改中添加一个断点!选择了界面的方法并按下Eclipse的Ctrl-T默认快捷键将帮助您找到此方法的所有实现。

老问题,但我确实想提到步骤过滤器作为一种可能的解决方案。要解决此问题,您可以定义一个步骤过滤器,该过滤器将使“步骤到”跨过焊接代理并在您实际希望其停止的位置停止


打开您的工作区首选项,导航到Java->Debug->Step Filtering并选择Add Filter。将$Proxy*定义为要筛选的模式。

感谢您的帮助回答。我可以发誓,有时候我可以轻松地从另一个类进入自己的类——使用相同的体系结构。因此,没有办法一步一步地浏览代码,看看每一步实际发生了什么?谢谢你的帮助性回答。我可以发誓,有时候我可以轻松地从另一个类进入自己的类——使用相同的体系结构。因此,没有办法一步一步地浏览代码,看看每一步实际发生了什么?@Leister您是否更改了Weld配置中的某些内容,例如通过一些注释?框架不注入原始对象,而是注入代理。这并不意味着你改变了你的设计。我可能已经改变了一些范围,比如@SessionScoped到@RequestScoped等等。什么注释可以负责?我从来都不在乎我在使用什么CDI实现,也不在乎它是如何工作的,只要它能工作。什么样的框架可以插入代理?