Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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
Java ';源代码与字节码不匹配';使用IDEA调试JdbcTemplate_Java_Spring_Orm_Ibatis - Fatal编程技术网

Java ';源代码与字节码不匹配';使用IDEA调试JdbcTemplate

Java ';源代码与字节码不匹配';使用IDEA调试JdbcTemplate,java,spring,orm,ibatis,Java,Spring,Orm,Ibatis,当我调试JdbcTemplate源代码use IDEA时,IDE提示我:“源代码与字节码不匹配” 截图: 我使用mvn管理我的项目;我的maven pom配置是: <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.orm</artifactId>

当我调试JdbcTemplate源代码use IDEA时,IDE提示我:“源代码与字节码不匹配”

截图:

我使用mvn管理我的项目;我的maven pom配置是:

<dependency>
                <groupId>org.springframework</groupId>
                <artifactId>org.springframework.orm</artifactId>
                <version>3.0.5.RELEASE</version>
  </dependency>

org.springframework
org.springframework.orm
3.0.5.1发布

当编译的代码与源代码不匹配时,Intellij会给出这样的警告。ie您尝试调试代码,该代码已更改,不再构建

确保在导入代码后,没有修改任何部分,如果修改,则首先构建/编译代码,然后仅启动调试

例如,以下代码将导致此警告:-

    public class HelloSO {
    public static void main(String[] args) {
        System.out.println("First time source code");
    }
  }
现在您编译了上述类并开始调试它,一切正常


但在这之后,您再添加一条print语句,并尝试将调试点放在该行上,而不重新编译它,那么在这种情况下,不会生成新行的字节码,因此,您将从IntelliJ收到相同的警告。

对于我来说,出现此问题是因为我对源代码进行了更改,但尚未将其部署到目标设备。它仍然允许我设置令人困惑的调试,但随后给了我这个错误

要修复:

  • 重建项目/模块
  • 重新部署到目标设备
  • 运行调试器

  • 重建/重新部署后,调试和部署的代码将匹配,您不应该再收到任何错误!只需将两个二进制文件进行匹配。

    在查看了有关此问题的其他类似问题和答案后(这些问题和答案对我都没有帮助),解决此问题的方法只是添加一个依赖项。在我的例子中,我在调试org.springframework.web.servlet.DispatcherServlet时遇到了这个问题。我终于注意到IntelliJ在我的导入中找不到javax.servlet

    在我的Maven项目中,我添加了

    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>8.0.1</version>
    </dependency>
    
    
    爪哇
    JavaEEAPI
    8.0.1
    
    我的pom.xml解决了这个问题


    仔细检查是否正在解析所有导入。

    如果您有多个依赖项,并且这些依赖项本身具有相同依赖项的不同版本,则也可能发生这种情况。JetBrains网站上的这篇文章展示了如何在首选项中启用备用源切换器


    我也有同样的问题。根本原因是两个不同的jar包有一些冲突。因此,我通过删除一个冲突的jar包来解决它。

    我今天遇到了一个与您类似的问题。我发现我的IntelliJ设置为使用Java版本16,而我的项目是在Java版本11中构建的

    为了修复它,我做了如下操作:单击文件->项目结构->项目设置->项目,并将“项目SDK”属性更改为版本11


    单击“确定”按钮后,我再也没有收到“源代码与字节码不匹配”的消息。

    我没有修改任何内容,仍然在
    oracle.ucp.jdbc.PoolDataSourceImpl上收到该消息。
    。。。源代码由IntelliJ从类文件反编译。所以根本没有修改。@nephettom这个类是来自您最近添加的新jar吗?不是真的。。。这只发生在从Maven依赖项添加的JAR中。这种情况发生在属于Oracle UCP jar的类和MyBatis jar的类中。我想这是一个IntelliJ问题,它变得混乱并显示了这条消息。@Nephettom,你是否杀死了intellijI任务栏上的任何进程?我真的不知道你所说的“IntelliJ任务栏”是什么意思。。。但我不会杀死或关闭任何东西。我只是使用调试器。有时发生,有时不。。。使用相同的类并且不重新编译任何东西。如何“部署”它?