jdbcTemplateソースコードをデバッグするときにIDEAを使用すると、IDEヒント: 'ソースコードがバイトコードと一致しません'
スクリーンショット:
そして、mvnを使用してプロジェクトを管理します。mavenpomの構成は次のとおりです。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.orm</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
これは、同じ依存関係のバージョンが異なる複数の依存関係がある場合にも発生する可能性があります。 JetBrainsサイトのこの投稿は、設定で代替ソーススイッチャーを有効にする方法を示しています。
この問題に関する他の同様の質問と回答を見た後、どれも私を助けませんでしたが、問題を解決したのは単に依存関係を追加することでした。私の場合、org.springframework.web.servlet.DispatcherServletをデバッグしようとしたときにこの問題が発生しました。 IntelliJがインポートでjavax.servletを見つけられなかったことにようやく気づきました。
私のMavenプロジェクトでは、
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
</dependency>
問題を解決した私のpom.xmlに。
すべてのインポートが解決されていることを再確認してください。
コンパイルされたコードがソースコードと一致しない場合、Intellijはそのような警告を出します。つまり、変更されて再構築されていないコードをデバッグしようとします。
コードをインポートした後、コードの一部を変更していないことを確認してください。変更する場合は、最初にコードをビルド/コンパイルしてから、デバッグのみを開始してください。
たとえば、以下のコードはこの警告を引き起こします:-
public class HelloSO {
public static void main(String[] args) {
System.out.println("First time source code");
}
}
上記のクラスをコンパイルしてデバッグを開始すると、すべて正常に動作します。
しかし、その後、もう1つのprintステートメントを追加し、再コンパイルせずにその行にデバッグポイントを配置しようとすると、この場合、新しい行のバイトコードが生成されないため、IntelliJから同じ警告が表示されます。
私も同じ問題を抱えていました。根本的な理由は、2つの異なるjarパッケージにいくつかの競合があることです。そこで、競合するjarパッケージの1つを削除して解決しました。
私の場合、この問題は、ソースコードに変更を加えたが、ターゲットデバイスにまだ展開していないために発生していました。それでも、混乱を招くデバッグを設定できましたが、このエラーが発生しました。
修正するには:
再構築/再デプロイ後、デバッグコードとデプロイされたコードは一致し、エラーは発生しなくなります。 2つのバイナリを一致させるだけです。