You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse集成WebSphere 9.0调试EAR包时代码不同步如何解决

WebSphere 9.0 + Eclipse 调试时代码行号不同步排查方案

1. 先排除编译配置错误

这类问题首先排除编译环节没生成行号信息的问题,不用先急着清缓存:

  • 打开Eclipse全局编译配置Window > Preferences > Java > Compiler,确认Classfile Generation分类下的Add line number attributes to generated class files为勾选状态,未勾选时编译出的class文件本身就没有正确的行号映射,怎么部署都会错位。
  • 右键关联的EJB、Web项目,进入Build Path > Configure Build Path > Source标签页,检查每个源码目录的Excluded规则,确认你调试涉及的Java文件没有被排除在编译范围外,被排除的文件会一直复用旧版本class。
  • 关闭Project > Build Automatically,执行Project > Clean,勾选所有关联项目和Start a build immediately,等全量编译完成后再重新开启自动构建,排除增量编译导致的class和源码不匹配。

2. 全量清理WAS 9.0侧缓存

WAS的多层缓存不会因为控制台点重新部署就自动清空,清理前必须完全停止对应的WAS server,避免文件被进程占用删不干净:

  • 进入WAS安装目录下的profile路径(默认是profiles/AppSrv01,如果自定义过profile选自己实际用的那个),删除以下路径下的所有内容:
    • wstemp:WAS运行时工作临时缓存
    • temp:JSP、Web/EJB模块编译后的临时class缓存
    • config/temp:配置、应用同步的临时缓存
  • 进入installedApps/<对应cell名称>/路径,删除当前调试的EAR对应的整个展开目录,不要留旧的应用文件。
  • 重启WAS,先不关联Eclipse,直接登录WAS控制台上传本地刚编译好的EAR包安装,安装时勾选Precompile JavaServer Pages files和Distribute application选项,安装完成后启动应用,先验证功能是最新代码逻辑,确认WAS本身能正常部署新包。

3. 清理Eclipse WDT插件的联动缓存

如果是通过Eclipse的WebSphere Developer Tools插件直接关联WAS做热部署,插件本身有独立的部署缓存,点重新发布不会自动清空:

  • 完全关闭Eclipse,进入当前使用的Eclipse工作空间目录,删除以下路径下的所有缓存文件:
    • .metadata/.plugins/com.ibm.ws.ast.st.core/core
    • .metadata/.plugins/com.ibm.ws.management.core/cache
  • 重新打开Eclipse,删除原有配置的WAS服务器实例,重新创建关联对应profile的WAS 9.0服务器,重新将EAR包添加到服务器关联列表,不要复用之前的部署配置。
  • 调试启动前先右键服务器选择Publish,等控制台提示发布完成后,再以Debug模式启动服务器,不要直接点Debug按钮触发增量发布。

4. 特殊场景排查

以上步骤做完仍有问题的话,排查两个容易遗漏的点:

  • 对齐JDK版本:WAS 9默认运行环境是Java 8,检查Eclipse项目的编译合规级别,确保和WAS配置的JVM版本完全一致。版本不匹配时WAS会对class做字节码转换,直接打乱行号映射。WAS侧JDK版本可以在控制台Application servers > <目标服务器> > Java and Process Management > Process definition > Java Virtual Machine路径查看。
  • 排查类冲突:如果EAR包内多个模块(比如多个WAR、WAR和EJB JAR)存在同包同名的类,类加载器会优先加载路径优先级更高的旧版本类,导致调试关联的源码和实际执行的class不匹配。可以在控制台开启类加载追踪:进入Application servers > <目标服务器> > Troubleshooting > Logs and trace > Diagnostic trace service,添加追踪规则com.ibm.ws.classloader.*=all,重启后查看trace日志里实际加载的class文件路径,定位到旧class文件删除即可。

注意:所有缓存清理操作必须在WAS完全停止、Eclipse完全关闭的状态下执行,否则进程占用会导致旧文件残留。清理完成后第一次部署不要做任何代码修改,等全量部署启动完成后再修改代码调试,避免增量同步逻辑触发旧缓存复用。

内容的提问来源于stack exchange,提问作者Luciana Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:54:31