GoogleAppEngineソース(SDK 1.7.0)にブレークポイントを設定しようとしていますが、IDEA Ultimate(11.0.2)は単にWarning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl
。
単体テストからコードを実行するときと開発サーバーを起動するときにこのエラーメッセージが表示されます。
それは非常に面倒です。とにかく私のソースは外部(IDEAホームとプロジェクトホーム)の両方に関連する)ディレクトリにあり、jarファイルはAppengine SDKのlibディレクトリにあります。
Jarファイルはプロジェクトライブラリとしてモジュールに追加され、ソースはこのライブラリに添付されます。私もモジュールの依存関係で遊んでいましたが、運はありませんでした。最後に、このライブラリをCompileスコープに入れることにしましたが、SDKが実行時にこれらのjarを提供するため、それは悪い考えでした。そこで、Providedスコープにフォールバックすることにしました。
また、モジュール依存関係タブのエクスポートチェックボックスで遊んでみましたが、これは無関係だと思います web help によれば、エクスポートは依存モジュールがありライブラリを利用可能にする場合にのみ重要ですこれらのモジュールでも同様です。
とにかく、この質問が発生しました 4年前 。だから私は今、この問題を解決することが本当に難しいのかどうか疑問に思っていますか?
私は今非常に失望しています。 IDEAこれまでに問題はありませんでした...この問題 他の人に発生 も見たので、これはユニークではないでしょう。
どんな助けも大歓迎です。
以下のjavap
実験のために質問を編集しました。クラスとソースは[〜#〜] not [〜#〜]同期していません。 SVNから1.7.0関連のリビジョンをチェックアウトし、1.7.0 SDKを使用しているため、これらはまったく同期しないはずです。
同様の問題があり、さまざまな試みが適用されました。以下は私の通常の手順です。
この後、通常は問題の99%をカバーします。それ以外の場合、おそらく他の可能性を検討する必要があります。
Intellijでのデバッグ中に同様の問題に直面していました。コードスニペットの1つにブレークポイントを置くことができなかったので、コードの行番号を変更し、その後ブレークポイントを置くことができました。 intellijのバグまたは何らかのキャッシュの問題のように見えます。
IDEAは「実行可能コードが見つかりません」と言う他のケースを見つけました。一般的なパターンは、デバッグ情報なしでビルドされたコードをデバッグしようとしているということです。 「-g」フラグ(または同等の)セットを使用してコンパイルします。
問題の本質は、JVMがデバッガーによって使用されているソースと一致しないクラスファイル(単純なクラスまたはクラスパスからjarからロードされたクラス)を実行することです。これが理解されると、解決策は簡単です。ソースが実行中のクラスを表していることを確認してください。そのため、問題を解決するには、ソースをクラスなどに更新同期します。
質問はかなり古いですが、私の経験が将来誰かを助けるかもしれないと思いました。私の場合、デバッグ情報でコンパイルされていないコードをデバッグしようとしていました。私は、変更前の元の親pomファイルがビルドセクションで以下のように見えるmavenを使用しています。
<build>
<pluginManagement>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<target>${javaCompilerVersion}</target>
<source>${javaCompilerVersion}</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--More plugins...-->
</pluginManagement>
</build>
上記のセクションを次のように変更しました。
<build>
<pluginManagement>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<target>${javaCompilerVersion}</target>
<source>${javaCompilerVersion}</source>
<encoding>UTF-8</encoding>
<debug>true</debug>
<debuglevel>lines,vars,source</debuglevel>
</configuration>
</plugin>
<!--More plugins...-->
</pluginManagement>
</build>
追加された<debug>
および<debuglevel>
要素に注意してください。 debuglevel要素は、コンマで区切られた3つの引数の任意の組み合わせを取ることができます。
この変更をコンパイルした後、ようやくIDEAにブレークポイントを設定することができました。
問題のクラスを再コンパイルすることで、この問題を修正することができました:ビルド->再コンパイル(ファイル名.Java)
同じ問題がありました。理由はわかりませんが、コメントの追加や削除など、コードの変更を追加するのに役立ちました。奇妙ですが、問題は解決しました
同様の問題があり、Tomcat構成の[展開]タブの[サーバーの起動時に展開]の間違いが原因でした。誤って「:war爆発」で非常によく似たプロジェクトに変更しました。元に戻したとき、うまくいきました。
同じ問題があり、サーバー上のコードのバージョンとデバッグしているコードのバージョンが異なることがわかりました。コードを同期した後、問題は解決しました。
Proguardを実行していないことを確認してください。助けてくれました。
メニュー->ファイル->キャッシュの無効化/再起動
これはIntelliJ 13.0.2の下で私のために働いた
一部のサーバーを使用している場合、「低メモリモード」になります。つまり、無効にするオプションやキャッシュに関係なく、デバッグは行われません。
サーバーを停止し、Javaに渡されるオプションのメモリ設定を増やして、サーバーを再起動します。モード"。
私の場合、Tomcatでデバッグ構成を使用すると同じ問題が発生しました。上記のすべてを試しましたが、何もしませんでした。私がTomcatを再構成したとき(デバッグ>構成の編集> Tomcatの削除>もう一度最初から追加)、最終的に動作しました:)
ディスク容量を確認し、メモリを解放してください。ディスク領域が不足している場合、サーバーが「低メモリモード」にない場合でも、intelliJはデバッグに必要なクラスをキャッシュするための領域を割り当てません。結果として、ブレークポイントを設定することはできません。
私の場合、デバイスで実行中のすべてのプロセスを強制終了し、切断して再接続しました。
私はIntellijプラグインで作業していましたが、サンドボックスIntellijが表示されたときに、最終的に問題を修正したのは、サンドボックスIntellijが表示されたら、そこから再構築したことです。
その後、IntellijとサンドボックスIntellijの両方を構築し、最終的に同期しました。