2017-02-11 263 views
1

我在IntelliJ中调试Java代码时遇到了一个问题。调试时源代码与字节码IntelliJ 15不匹配

我连接到远程服务器,我正在使用Maven构建我的项目并且项目正在正确构建,并多次验证它。

每当我插入一个调试点时,IntelliJ都会返回一个错误消息“在那个位置没有可执行代码”。插入一些断点时,IntelliJ在执行“源代码不匹配字节代码”时返回错误消息。

尝试了各种链接提供的解决方案,如:使用同步选项,无效缓存,重建等。

+0

您是否确定IDE中的源代码对应于在远程JVM中加载的类?可能是因为在类路径中有一些额外的jar,而旧版本的版本会覆盖较新的版本,或者代码是在没有调试信息的情况下构建的,或者某些注释处理器或obfucsator在构建过程中更改了目标类。 – CrazyCoder

+0

有时候,当你在maven中有更新版本的项目时,会发生这种情况,但本地版本已过时。试试'Settings-> Maven-> Reimport project'并看看会发生什么。 –

+0

**安东**,我试过你提到的,虽然我没有看到一个选项重新导入项目,启用了选项总是更新快照。但没有成功。早些时候,我在IntelliJ的单个窗口中打开了多个构建在同一个回购站中的项目,现在我尝试打开单个项目,但没有成功。 –

回答

1

您需要确保IDE中的源代码与远程JVM中加载的类相对应。

这可能是因为在类路径中有一些额外的jar,而旧版本的版本会覆盖更新的版本,或者代码是在没有调试信息的情况下构建的,或者某些注释处理器/混淆器在构建过程中更改了目标类。使用javap或反编译器可以帮助检测不同步的类。

正如您在评论中提到的那样,服务器上运行的代码来自不同的git分支,而不是您在IDE中使用的代码。这可以通过在IDE中重建项目并将实际代码部署到服务器来避免。