2012-07-21 31 views
38

私は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を伝え続けます。Intellij IDEAでJavaブレークポイントを設定できません

単体テストのコードを実行して開発サーバーを起動すると、このエラーメッセージが表示されます。

非常に告白されています。とにかく、私のソースは外部(IDEAホームとプロジェクトホームの両方に関連する)ディレクトリにあり、私のjarファイルはAppengine SDKのlibディレクトリの下にあります。

私のjarファイルはプロジェクトライブラリとしてモジュールに追加され、ソースはこのライブラリに添付されています。私はモジュールの依存関係も持ち歩いていましたが、運が全くありませんでした。最後に、このライブラリをコンパイルスコープに入れることにしましたが、SDKが実行時にこれらのjarファイルを提供するので、それは悪い考えでした。そこで、私は提供スコープにフォールバックすることに決めました。

また、モジュールの依存関係タブでエクスポートチェックボックスを使用していましたが、これは無関係であると思います。web helpによれば、エクスポートは依存モジュールがある場合のみ重要です。よく

とにかく、この質問は4 years agoでも発生しました。だから私は今、この問題を解決することが本当に難しいかどうか疑問に思っています。

私は今非常に失望しています。これまでIDEAに何の問題もなかった...この問題はarised to other peopleであることもわかったので、これは一意ではないと思います。

何か助けていただければ幸いです。


私が原因以下の私のjavap実験に私の質問を編集した:クラスとソースが同期してされていないようです。私は1.7.0関連のリビジョンをSVNからチェックアウトし、私は1.7.0 SDKを使用しているので、これらは同期していてはいけません。

答えて

5

IDEAに「実行可能コードが見つかりません」というメッセージが表示される場合があります。一般的なパターンは、デバッグ情報なしでビルドされたコードをデバッグしようとしていたことです。 "-g"フラグ(または同等のもの)を指定してコンパイルしていることを確認してください。

+0

Hmmm ....それは論理的に聞こえる... :)私はそれがどのように構築されたかを調べようとしますが、私はコードをコンパイルした人ではないので(私はGoogleです)、私は本当に知りませんどうすればいいの?これに関する提案はありますか? –

+0

OK ...私はちょうどデバッグ情報が利用可能かどうかを見る方法に関連するあなたの他の答えを見つけました...あなたは本当に役に立つ人です! :)私はそれを試してみましょう。 –

+0

だから。私はクラスを正常に逆アセンブルした 'javap -v'コマンドを試しました。今私が見たことは、私の以前の疑惑を保証しただけです。逆アセンブルされたファイルは 'LineNumberTable:line 481:0'と言っています。これはちょうど私がブレークポイントを置くメソッドヘッダーの行番号です(次の行に置く)。だから、クラスとソースは同期しているようです(とにかく大きな驚きはありません)。 –

1

私は同様の問題を抱えていました。これはTomcat構成の[展開]タブの[サーバーの起動時に展開する]で間違っていたためです。私は誤ってそれを ":戦争が爆発した"という非常に似たプロジェクトに変更しました。私がそれを元に戻したとき、それはうまくいった。

47

私にも同様の問題があり、さまざまな試みがなされています。あなたはMavenの依存関係を使用している場合

  1. 、Mavenのプロジェクトに行く>ビルド - - - >問題が解決しない場合は、一番上のメニューをお試しください
  2. をリフレッシュ>プロジェクト
  3. を再構築します。以下は、私のいつもの手順でありますそれはまだ動作しない場合は、最上部のメニューを試してみてください - >ファイル - >無効化キャッシュ/再起動
  4. それはまだ動作しない場合は、$ CATALINA_BASE/binに/ catalina.sh停止、その後、
を開始

この後、通常、問題の99%をカバーします。そうでなければ、おそらくあなたはいくつかの可能性を調べなければならないでしょう。

+0

Thx。私のために働く! – Antonio

+0

ローカル履歴を削除せずにキャッシュを無効にする方法はありますか? – Goot

+1

ビルド - >リビルドプロジェクトは私の仕事です。投稿ありがとう! – jseals

1

Proguardを実行していないことを確認してください。それは私を助けた。

+4

これはコメントのようです。 –

8

Intellijにも同様の問題がありました。私はコードスニペットの1つにブレークポイントを置くことができませんでした。私はコードの行番号を変更して、ブレークポイントを置くことができました。 IntelliJのバグのように見える

+0

私はまったく同じ状況です:( 私はブレークポイントを置くことができる行を変更するとき! – Sergio

1

メニュー - >ファイル - >無効化キャッシュ/再起動

あなたは、彼らがになりますいくつかのサーバを使用している場合、これは「IntelliJの13.0.2の下で私のため

1

を働きましたあなたが無効化するオプションやキャッシュに関係なく、あなたがデバッグしないことを意味します。

サーバーを停止し、javaに渡されるオプションのメモリ設定を増やし、サーバーを再起動する必要があります。ログをチェックして、「低メモリモードで実行中」などのレポートを受け取らないようにします。

1

同じ問題があって、サーバー上のコードのバージョンとデバッグ対象のコードのバージョンが異なることがわかりました。コードを同期させた後、問題は解決されました。

0

私のケースでは、デバイス上の実行中のプロセスをすべて強制終了し、切断して再接続しました。

2

質問はかなり古いですが、私の経験は将来的に誰かを助けるかもしれないと思っていました。私の場合は、デバッグ情報でコンパイルされていないコードをデバッグしようとしていました。私は変更前の元の親の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にブレークポイントを入れることに成功しました。

0

問題の本質は、デバッガで使用されているソースと一致しないクラスファイル(単純なクラスまたはクラスパスからjarからロードされたクラス)をJVMが実行することです。 これを理解したら、解決策は簡単です。ソースが実行されているクラスを表していることを確認してください。 この問題を解決するには、ソースをクラスなどにリフレッシュ同期させることができます。

0

私の場合はTomcatでデバッグ設定を使用して同じ問題が発生しました。 私は上記のすべてを試みたが、何もしなかった。 Tomcatを再構成したばかりのとき(デバッグ>編集構成> tomcatを削除してから再び追加します)、最終的には動作していました:)

0

PCを再起動してください。 それは私の場合を解決しました。 シンプルが一番..です

1

私は質問でクラスを再コンパイルすることで、この問題を解決することができました: ビルド - >再コンパイル(filename.java)

0

は、あなたのディスクスペースをチェックして、いくつかのメモリを解放します。ディスクスペースが不足している場合、サーバーが「メモリー不足モード」でない場合でも、intelliJはデバッグに必要なクラスをキャッシュするためのスペースを割り振りません。その結果、ブレークポイントを設定することはできません。

関連する問題