20

現在、EclipseGalileoおよびJBoss4.2.3で「ホットコード置換」が機能しないという問題が発生しています。

他のアプリケーションの中でも、ローカルのJBossで展開されたJavaWARを実行しています。ビルド元のプロジェクトはMavenによって管理されています。Mavenゴールwar:explodedを使用してプロジェクトをビルドし、ANTスクリプトを使用してそのディレクトリをJBossにコピーします。

アプリケーションを実行してコードの任意の場所にブレークポイントを設定すると、Eclipseはデバッグモードでその行で適切に停止します。しかし、ソースファイルに変更を加えて保存する場合、Eclipseはこの変更をJBossに適用しません。たとえば、通常のコード行をコメントにすると、デバッガーは通常のJavaコードであるかのようにこのコメントをステップオーバーします。または、行を削除すると、デバッガーがファイルと同期していないように見え、括弧のステップオーバーを開始します。

しかし、「ホットコード置換エラー」メッセージも表示されません。Eclipseは変更をソースファイルに適用しているように見えますが、JBossには適用していません。

ホットコード置換を機能させるためにオンにする必要がある特別な設定はありますか?または、アプリケーションをビルドしてJBossにデプロイする方法に間違いはありますか?

4

5 に答える 5

46

私はJBossを使用していませんでしたが、2つの提案があります。

  1. 起動構成を使用してEclipseでアプリケーションを実行する場合

    、「プロジェクト」-「自動ビルド」フラグが有効になっていますか?そうでない場合、コードはコンパイルされず、実行時に無視されます。

  2. リモートモードでアプリケーションをデバッグする場合、コードを変更することはできませんが、パラメーターの値を変更することはできます。(おもう)

于 2010-04-20T08:14:19.557 に答える
10

MavenとEclipseのプロジェクトで問題が発生しました。エラーは表示されませんでしたが、ホットコードの置換は機能していませんでした。「自動ビルド」をチェックする必要があると読みました。これを確認しましたが、まだ機能しませんでした。ビルドパスの他のプロジェクトでエラーが発生しました。それが間違いだったと思います。調べてみると、「ビルドパスエラー時にビルドを中止する」のチェックを外さなければならないことがわかりました。以下のリンクで詳細を説明しました。

于 2010-11-19T10:56:10.943 に答える
2

OpenLibertyでも同様の問題がありました。受け入れられた回答と@user513365からの回答に基づいて構築しましょう(リンクがなくなったため)。

私の場合、2つの問題がありました。

1.ビルドパスエラー

私の場合、不完全なビルドパスは、 src / main / javaのみを使用し、src / test / javaを使用しないMavenプロジェクトを使用していたためです (後者を作成することでこれを解決できた可能性があります)。

しかし、 [設定]-> [Java]->[コンパイラ]->[ビルド]に移動して、次の2つの変更のいずれかを行うことで、ホットコード置換を修正できました。

また:

  1. ビルドパスエラーが発生したときにビルドを中止するチェックボックスをオフにするか、
  2. ドロップダウンを使用して、不完全なビルドパスをからErrorに変更しWarningます。

2.Eclipseで構築されたクラスがロードされていることを確認します

私の場合、リモートJVMはローカルの.m2Mavenリポジトリからの完全なJARアーティファクトを使用していました。有効化の受け入れられた答え:「プロジェクト」-「自動的に構築」はここで微妙な点を見逃しています。

私の場合のEclipseプロジェクトビルドは、デバッガーが接続された後にEclipseビルドを実行した場合にのみ、ホットコード置換を実行します。はい、Eclipseビルドは自動的に実行されますが、リモートJVMを再起動してデバッガーを接続するだけでも、ローカルの.m2 JARからこのクラスをロードするように構成されており、ローカルの変更を取得しません。

この回答との最後の注意 その他の回答

自動的にビルドしているクラスを絶えず変更している場合は、ポイント2の微妙な点に気付かない可能性があります。受け入れられた回答と、@user513365の回答に記載されているビルドパスエラーがあれば十分です。

于 2021-02-10T20:04:34.027 に答える
1

最初のチェックは、プロジェクト/ビルドが自動的に行われることです。

また、アプリケーションサーバーの展開構成を確認する必要がある場合もあります。

たとえば、JBossの場合、Eclipseの[サーバー]ビューでサーバーをダブルクリックすると、2つのチェックボックスがある[DeploymentScanners]セクションがあります。

  • 不足しているデプロイメントスキャナーを追加する
  • シャットダウンする前に、追加されたデプロイメントスキャナーを削除します

https://docs.jboss.org/author/display/AS7/Deployment+Scanner+configuration JBossAS/デプロイメントスキャナーの設定

于 2016-12-21T16:30:17.823 に答える
0

最近Eclipse2019-06でこの問題が発生し、[設定]->[Java]->[デバッグ] ->[ホットコード置換]グループの[コンパイルエラーを含むクラスファイルを置換する]のオプションをオフにする必要があることがわかりました。そこにある他のすべてのオプションがチェックされました。それを行う前は、System.out.println呼び出しをassに変更しただけなのに、「ホットコードの置換に失敗しました-削除メソッドが実装されていません」というメッセージが表示されていました。(同じデバッグセッションで)そのオプションを変更するとすぐに、それが機能し始めました。

于 2019-06-24T17:03:07.390 に答える