web-dev-qa-db-ja.com

'ソースコードがバイトコードと一致しません' use IDEA debug JdbcTemplate

jdbcTemplateソースコードをデバッグするときにIDEAを使用すると、IDEヒント: 'ソースコードがバイトコードと一致しません'

スクリーンショット:

enter image description here

そして、mvnを使用してプロジェクトを管理します。mavenpomの構成は次のとおりです。

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

これは、同じ依存関係のバージョンが異なる複数の依存関係がある場合にも発生する可能性があります。 JetBrainsサイトのこの投稿は、設定で代替ソーススイッチャーを有効にする方法を示しています。

https://intellij-support.jetbrains.com/hc/en-us/community/posts/206822215-what-does-Choose-Sources-do-and-how-can-I-undo-what- it-does-

1
mouse_8b

この問題に関する他の同様の質問と回答を見た後、どれも私を助けませんでしたが、問題を解決したのは単に依存関係を追加することでした。私の場合、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に。

すべてのインポートが解決されていることを再確認してください。

1
Spencer Stewart

コンパイルされたコードがソースコードと一致しない場合、Intellijはそのような警告を出します。つまり、変更されて再構築されていないコードをデバッグしようとします。

コードをインポートした後、コードの一部を変更していないことを確認してください。変更する場合は、最初にコードをビルド/コンパイルしてから、デバッグのみを開始してください。

たとえば、以下のコードはこの警告を引き起こします:-

    public class HelloSO {
    public static void main(String[] args) {
        System.out.println("First time source code");
    }
  }

上記のクラスをコンパイルしてデバッグを開始すると、すべて正常に動作します。

しかし、その後、もう1つのprintステートメントを追加し、再コンパイルせずにその行にデバッグポイントを配置しようとすると、この場合、新しい行のバイトコードが生成されないため、IntelliJから同じ警告が表示されます。

私も同じ問題を抱えていました。根本的な理由は、2つの異なるjarパッケージにいくつかの競合があることです。そこで、競合するjarパッケージの1つを削除して解決しました。

0
Rt.Tong

私の場合、この問題は、ソースコードに変更を加えたが、ターゲットデバイスにまだ展開していないために発生していました。それでも、混乱を招くデバッグを設定できましたが、このエラーが発生しました。

修正するには:

  1. プロジェクト/モジュールを再構築します
  2. ターゲットデバイスに再デプロイします
  3. デバッガーを実行します

再構築/再デプロイ後、デバッグコードとデプロイされたコードは一致し、エラーは発生しなくなります。 2つのバイナリを一致させるだけです。

0
Neil Ruggiero