这是我第一次尝试创建Eclipse插件。我创建了一个,以及功能和更新站点。我将目标平台设置为我的本地Eclipse安装。当我从开发环境中运行/调试插件时,一切正常。
现在,我的同事从我托管的更新站点安装了插件。当他开始使用我的插件公开的任何功能时,他会获得运行时异常。
现在我很困惑为什么相同的插件在生产环境中表现不同,与开发环境相反,以及我从IDE调试时。两种情况下的目标平台都是相同的Eclipse版本。可能是什么原因?
如何在生产环境中调试插件?是否有远程调试功能来调试生产环境中的插件? 任何建议都非常有用!
答案 0 :(得分:18)
要远程调试插件,首先将调试参数添加到目标Eclipse .ini文件
-vmargs
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
发布之前。
然后使用包含插件项目的工作区打开另一个Eclipse实例。 打开运行> 调试配置... ,选择远程Java应用程序并创建新配置。
作为 Project ,浏览并选择您的插件项目。 同时填写连接属性(目标Eclipse的主机和端口 1044)。
启动新创建的调试配置允许您以与本地调试相同的方式调试插件。
答案 1 :(得分:2)
现在我很困惑为什么相同的插件在行为方面有所不同 生产环境,对开发环境和我的时候 从我的IDE调试它。两种情况下的目标平台都是 相同的eclipse版本。可能是什么原因?
这是一个经典之作:Eclipse插件和RCP应用程序确实在PDT(Eclipse IDE)和导出的产品之间表现不同。
在您的情况下,从导出的版本而不是从Eclipse抛出的NullPointerException是10个图像或其他资源文件(属性等)中的9倍,这些文件由代码加载但未在构建中列出。插件的属性。
无论如何,您需要检查日志以检索堆栈跟踪并查找其原因。这些日志可以在朋友的工作区中找到le .metadata/.log
file
答案 2 :(得分:0)
从现在的开发工作区,使用“Debug As - > Eclipse Application”菜单项启动测试工作区。启动时,您将运行两个工作区:原始开发工作区和新测试工作区。您可以在开发工作区的插件代码中设置断点,并在测试工作区中运行插件。
当您在测试工作区中的插件执行到达其中一个断点时,执行将暂停,您可以使用开发工作区中的Debug视图来查看变量,设置更多断点或其他任何您想要执行的操作来删除插入。
答案 3 :(得分:0)
请参阅Apache Wiki for Developing with Eclipse。
在Windows 10下,Tomcat作为Windows服务运行,我开始了:
tomcat8.5\bin\Tomcat8w.exe
&安培;在 Java 标签中添加 Java选项中的第一个条目以启用远程调试:
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n