391

ブレークポイントを設定しようとしているときに、Eclipse でこの奇妙なエラーが発生します。

Unable to insert breakpoint Absent Line Number Information

コンパイラオプションからチェックボックスをオンにしましたが、うまくいきませんでした。

4

41 に答える 41

238

Eclipse 3.4.1、Tomcat 6.0 に接続された SUN JVM1.6.0_07 で同じエラー メッセージが表示されました (別のマシン、Sun JVM1.6.0_16 でデバッグ モードで実行すると、デバッグ接続は正しく機能しました)。

ウィンドウ→設定→Java→コンパイラ→クラスファイル生成:「生成されたクラスファイルに行番号属性を追加する」にチェックを入れました。私はきれいに再コンパイルしました。チェックを外して、再コンパイルして、チェックして、再コンパイルしました。プロジェクトがグローバル設定を使用していることを確認しました。それでも同じメッセージ。

使用して、antビルドに切り替えました

<javac srcdir="./src/java" destdir="./bin" debug="true">

それでも、同じメッセージ。

このメッセージの原因と、消えない理由がわかりませんでした。実行中のTomcatデバッグセッションと関係があるように見えましたが、切断されたときに再コンパイルすると問題が解決します. しかし、デバッガーを Tomcat に接続するか、接続されたデバッグ セッション中に新しいブレークポイントを設定すると、再び表示されました。

しかし、メッセージが間違っていることが判明しました。デバッグ前とデバッグ中の両方で、実際にデバッグしてブレークポイントを設定することができました(javap -lでも行番号が表示されました)。だから無視してください:)

于 2009-11-03T23:01:58.117 に答える
120
  1. Eclipse メニューで、[ウィンドウ] -> [設定] -> [Java] -> [コンパイラ] に移動します。
  2. チェックボックス「行番号属性を追加...」のチェックを外します
  3. [適用] -> [はい] をクリックします
  4. チェックボックス「行番号属性を追加...」にチェックを入れます
  5. 再度申請してください。
  6. 楽しくデバッグしてください
于 2009-08-23T12:48:32.307 に答える
30

これは私の問題を修正しました:

  1. ウィンドウ -> 設定 -> サーバー -> ランタイム環境
  2. Apache Tomcat -> 編集
  3. JRE の代わりに JDK を選択します
于 2011-01-21T14:42:05.393 に答える
19

Spring関連の問題については、場合によっては「行番号なし」でクラスを生成することを考慮してください。たとえば、@Serviceインターフェイスのない注釈付きクラスの場合、インターフェイスを追加するとデバッグできます。完全な例については、こちらを参照してください。

@Service("SkillService")
public class TestServiceWithoutInterface {
   public void doSomething() {
      System.out.println("Hello TestServiceWithoutInterface");
   }
}

上記のサービスには、Spring によって生成されたインターフェイスがあり、「行番号の欠落」が発生します。実際のインターフェイスを追加すると、生成の問題が解決されます。

public interface TestService {
    void doSomething();
}

@Service("SkillService")
public class TestServiceImpl implements TestService {
   public void doSomething() {
      System.out.println("Hello TestServiceImpl");
   }
}
于 2015-04-16T09:41:55.100 に答える
14

この問題に対する BlackBerry SDK 側からの答えがあります。何らかの理由で、コンパイラのオプションを何度変更しても、実際の基本設定ファイルは変更されませんでした。

プロジェクトの .settings フォルダーで、org.eclipse.jdt.core.prefsというファイルを探します。

そこで、設定を手動で変更できます。

org.eclipse.jdt.core.compiler.debug.lineNumber=generate

編集:これに加えて、Eclipseが与えるアラートを無視できる場合があり、それでも必要な場所で停止することに気づきました...好奇心と好奇心...これを、対処することを学ぶバケツに入れます開発者として働いているとき。

于 2011-04-22T21:59:16.847 に答える
8

これは私のために働いた:

  1. の下Window --> Preferences --> Java --> Compiler --> Classfile Generationでは、すべてのオプションを にする必要がありますTrue
  2. build.xmlタスクdebug="true"で作成されます。<javac>
  3. ant によって生成された war によって tomcat にアプリケーションをデプロイする
  4. DebugモードでTomcatを再起動しました
于 2012-05-08T05:24:16.000 に答える
8

これがまだ関連しているかどうかはわかりませんが、おそらく別の船員がこれを役に立つと思うでしょう.

このメッセージは、デバッグ フラグをオフにしてコンパイルされたクラス ファイルがある場合に表示されます。

Eclipse では、前述のオプションでオンにできます。

ウィンドウ --> 設定 --> Java --> コンパイラ --> クラスファイル生成: 「生成されたクラス ファイルに行番号属性を追加」

ただし、jar ファイルがある場合は、コンパイルされた出力が得られます。この問題を解決する簡単な方法はありません。

ソースにアクセスでき、ant を使用して jar ファイルを取得する場合は、ant タスクを次のように変更できます。

  <javac  destdir="${build.destDir}" srcdir="${build.srcDir}" source="1.6" fork="true" target="${javac.target}" debug="on" debuglevel="lines,vars,source" deprecation="on" memoryInitialSize="512m" memoryMaximumSize="1024m" optimize="true"   >

楽しいデバッグ..

参照: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm

于 2011-07-06T21:14:56.713 に答える
4

Eclipse からデバッグ モードで Tomcat を起動しようとしたときに、この問題が発生しました。コンパイルとデプロイを処理する ANT ビルド ファイルがありました。(他の回答で述べたように) デバッグ フラグを true に設定し、アプリケーションを再デプロイすると、正常に動作しました。

<javac srcdir="./src/java" destdir="./bin" debug="true">

注:デバッグ フラグを追加して再コンパイルしたばかりの場合でも、Eclipse がクラス ファイルをデバッグしているため、アプリケーションをサーバーに再デプロイする必要があります。非常に明白ですが、1 時間ほど頭をかきむしり、なぜ機能しないのか疑問に思うのは簡単です (私を信じてください)。

于 2009-11-15T00:13:22.320 に答える
4

使用する を変更してみてくださいjre。代わりjreに のフォルダに を設定してください。JDK

于 2013-03-19T12:52:39.543 に答える
2

このメッセージのもう 1 つの理由を見つけました。私はScalaをプログラミングしていました。解決策は次のとおりです。

  1. 実行を開く -> デバッグ構成
  2. [メイン] タブの下部にある [適用] ボタンと [元に戻す] ボタンの横に、使用しているランチャーを示すテキストがあり、その横に [その他を選択] というハイパーリンクがあります。これは奇妙な UI 要素であり、一見すると実用的ではないように見えます。
  3. 「その他を選択」リンクを使用して、「Scala Application (new debugger) Launcher」を選択します。もう 1 つは Scala では動作しないようです。

これでデバッグが機能するはずです。Scala IDE プラグインをインストールしたことに注意してください。このオプションは、持っていない場合は使用できない場合があります。

于 2014-05-12T18:33:08.480 に答える
2

私の状況は似ていました:

  • JUnit テストをデバッグしていました
  • 次のように、Mockitoを使用してスパイを作成していましたspyTask = spy(new Task())
  • スパイしていたクラスの内部にブレークポイントを配置しました(内部Task.java

このブレークポイントは、実行するたびに問題のエラーを生成しますDebug As... > JUnit Test

この問題に対処するために、ブレークポイントを実際のテスト (TaskTest.java 内) に移動しました。実行が停止したら、元の場所 (Task.java 内) にブレークポイントを追加しました。

それでも同じエラーが発生しましたが、「OK」をクリックすると、ブレークポイントは正常に機能しました。

誰かを助けることを願って、

-gmale

于 2011-05-29T00:27:42.130 に答える
2

Spring AOP でこのメッセージを受け取りました (CGLIB ライブラリから来ているようです)。[無視] をクリックしても問題なく動作するようですが、まだデバッグできます。

于 2013-04-15T17:03:23.300 に答える
2

jettyサーバーで作成し、ANTで新しい.warファイルをコンパイルすると、同じ問題が発生しました。以前に書かれたように Java Compiler を設定した後、同じバージョンの jdk/jre コンパイラとビルド パス (jdk 1.6v33、jdk 1.7 など) を作成する必要があります。

私はすべてをしましたが、まだ機能していません。解決策は、コンパイルされた.classファイルと生成されたwarファイルのターゲットを削除することで、現在は機能しています:)

于 2012-07-04T08:09:46.387 に答える
2

上記のことは私にとってはうまくいきませんでした。以下のソリューションが最終的に機能しました。Debug Configurations -> Classpath -> User Entries -> (デバッグするプロジェクトの src フォルダーを追加します。)

于 2019-06-25T20:50:21.120 に答える
1

JBoss 7.1 で同じエラーが発生しました。そして、Zefiro と同じことをしました。エラーを無視しただけで、ブレークポイントを正常に配置できました。私の場合、私は思考アリビルダーを構築していましたが、これは私の javac タスクです:

<javac
        srcdir="${src.dir}"
        destdir="${build.classes.dir}" 
        includeantruntime="false" 
        debug="${debug}"
        verbose="false"
        debuglevel="lines,vars,source"
        source="1.6"
        target="1.6">

        <!-- Sppressing warning for setting an older source without bootclasspath
             (see: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source) -->
        <compilerarg value="-Xlint:-options"/>

        <classpath>
            <fileset dir="${lib.dir}" includes="*.jar" />
            <fileset dir="${jboss.lib.dir}" includes="**/*.jar" />
        </classpath>

    </javac>
于 2013-04-16T20:05:53.297 に答える
1

同じ問題が発生しました。解決策を探すのに多くの時間を費やしましたが、これらの解決策は役に立たないので、すべてのケースを自己研究し、最終的にJDKバージョン間の競合であることがわかりました。以下は、問題を解決するための手順です。 1. JDK および JRE バージョンをすべて削除し、1 つのバージョンのみを保持します。2. Java_HOME システムの設定と Eclipse の Java コンパイラは同じです。場合によっては、上記のエラーが消えないことがありますが、デバッグ モデルで実行できます。

于 2015-03-21T04:47:52.433 に答える
0

ある特定のプロジェクトで同じ問題が発生し、ウィンドウ - >設定で行番号属性をリセットしようとし続けました...その後、各プロジェクトには行番号属性の独自の設定があることに気付きました。プロジェクトを右クリックしてプロパティに移動し、JavaCompiler を選択して、「行番号属性を追加...」のチェックボックスをオンにします。

于 2016-06-13T20:54:28.510 に答える
0

ロギング マネージャーをデバッグしようとしていたため、jre を jdk に変更してから、「メイン」タブの「Java ランタイム環境」でこの jdk を選択する必要がありました。デバッグ構成の「ランタイム JRE」は、すべて順調でした。

于 2014-05-23T09:40:51.980 に答える
0

以下を確認/実行します。

1) [ウィンドウ --> 設定 --> Java --> コンパイラ --> クラスファイルの生成] の下で、すべてのオプションを True にする必要があります。

(1) Add variable attributes...
(2) Add line number attributes...
(3) Add source file name...
(4) Preserve unused (never read) local variables

2) プロジェクトの .settings フォルダーで、org.eclipse.jdt.core.prefs というファイルを探します。org.eclipse.jdt.core.compiler.debug.lineNumber=generate を確認または設定します

3) それでもエラー ウィンドウが表示される場合は、チェックボックスをクリックしてエラー メッセージを表示しないようにします。

4) プロジェクトをクリーンアップしてビルドします。デバッグを開始します。

通常、エラー ウィンドウは表示されなくなり、デバッグ情報が正しく表示されます。

于 2012-01-16T10:37:38.730 に答える
0

jar のコンパイル/ビルド中に上記のすべてのことを行いましたが、それでも同じ問題がありました。

最終的に、サーバーの起動中に以下にリストされている jvmarg の変更が最終的に機能しました。

  1. javaagent および bootclasspath に関連する一連の jvm 引数を削除/コメントしました。

<!-- jvmarg value="${agentfile}" /-->

<!-- jvmarg value="-javaagent:./lib/foobar /-->

<!-- jvmarg value="-Xbootclasspath/a:/foo /-->

  1. 次の行をオン/コメント解除しました:

<jvmarg value="-Xdebug" />

次に、サーバーを起動すると、ブレークポイントに到達できます。javaagent が何らかの形で Eclipse の行番号検出機能を妨害していたのではないかと思います。

于 2010-11-16T00:42:46.350 に答える
0

以前の解決策のほとんどを試しましたが、まだ問題がありました。これは私が次にしたことです:

  • Eclipse からアプリケーションを削除しました
  • サーバーを停止しました
  • webapps からアプリケーション フォルダーを削除します。
  • サーバーの一時フォルダーからコンテンツを削除する
  • サーバーの作業フォルダーからコンテンツを削除する
  • Eclipse でアプリケーションを再度開きます。
  • サーバーを起動する

この手順の一部は必要ないかもしれませんが、「念のため」です。

したがって、以前の解決策がまだ機能しない場合。これを試して。役に立てば幸いです;-)

于 2018-05-10T15:20:18.497 に答える
0

私もこの問題に遭遇しました。Ant ビルド スクリプトを使用しています。私はレガシーアプリケーションに取り組んでいるので、jdk バージョン 1.4.2 を使用しています。これは以前は機能していたので、調べ始めました。JRE タブのデバッグ構成で、Java のバージョンが 1.7 に設定されていることに気付きました。1.4に戻したら動きました。

これが役立つことを願っています。

于 2014-03-03T20:15:58.633 に答える
0

誰かが Java のソース コードをデバッグしようとしている場合、これが私にとって有効な唯一の解決策です。上記の回答のほとんどは、コンパイラ オプションを設定して行番号を生成することについて述べています。これは、ソース コードをデバッグする予定のプロジェクトが、 jar ではなく jar をJava Build Path --> Library --> JRE System Library指しているためです。jar内にバンドルされているクラスは、特定のオプションで事前にコンパイルされているため、コンパイラ オプションの設定は考慮されません。解決策は、 jarを指すようにプロジェクトを再構成することです。jar内のクラスは、コンパイラ オプション設定を尊重します。したがって、プロジェクトを更新するとjrejdkjreJRE System LibraryjdkjdkJRE System Libraryjarを指すようにすると、jdkJava ソース コードのデバッグが開始されます。

于 2019-06-28T08:06:46.967 に答える
0

Tomcatサーバーを使用したWebプロジェクトの場合、次の手順を使用して解決しました。

  1. ウィンドウを開く -> ビューを表示 -> その他 -> サーバー。
  2. 実行中の tomcat サーバーをダブルクリックします。(Tomcatサーバーの概要が開きます)
  3. 次に、Launch configuration リンクをクリックします。
  4. ソースタブをクリックします。
  5. [追加] をクリックします。
  6. Java プロジェクトを選択
  7. すべてのプロジェクトが表示されます。
  8. デバッグするオンを選択します。
  9. 構成を保存し、アプリケーションを再起動またはビルドします。
于 2018-10-12T10:50:04.467 に答える
0

上記の解決策が機能せず、Spring Bean インジェクションを行った後にその問題が発生し始めた場合、インジェクトされたクラスにインターフェイスを使用しなかったことが問題である可能性があります。インターフェイスを実装するクラスでインジェクションを実行すると、問題が解決します。例については、次のリンクをたどってください: Bean 作成のためのブレークポイントの問題をインストールできません

于 2017-04-05T12:58:05.503 に答える