2016-03-26 20 views
2

私はJavaFe 10.0.0ファイナルでJava EEアプリケーションを実行しており、次の構造を持っています(Apache Mavenは使用しません)。NetBeansでJRebelを使用する

enter image description here

私は、NetBeans(8.1)のためのJRebel 6.4.1を使用しています。 Webアプリケーション(エンタープライズアプリケーションではない)でもエンタープライズアプリケーションでも機能しますが、IDEは、EEモジュールまたはクラスのJavaファイルを変更すると、「リモートサーバーをセットアップするプロジェクトプロパティを開く」というメッセージを表示し続けますライブラリ(上記の図のように)は同期しています。

enter image description here

メッセージは、Webモジュールへの変更が同期されている場合、表示されません。

メッセージがあるにもかかわらず、モジュールが同期されてもEEモジュールの変更は伝播されますが、同期時にクラスライブラリの変更は反映されません。

アプリケーションがローカルホスト上で実行されているため、JRebelリモートサーバーは現在オフになっています。プロジェクトのプロパティダイアログでサーバーのURLを設定する必要がありますか?その場合のURLは何ですか?

他の提案がありますか?その場合、何か不足していますか?

enter image description here

+0

アプリケーションがローカルで実行されている場合は、リモートサーバー機能を使用する必要はありません。 JRebelパネルを開き、2番目の列(JRebel Remote列)にいずれのモジュールもチェックされていないことを確認します。 クラスファイルの変更が同期されていない場合、save on buildが有効になっていることを確認します。ビルドフォルダ内のクラスファイルは実際に更新され、変更している特定のモジュールのrebel.xmlは同じディレクトリを指しています。 自分でデバッグするのにあまり時間を費やさないでください。 [email protected]にお問い合わせください。 –

+0

プロジェクトプロパティには、クラスライブラリを含むすべてのモジュールで有効な「保存時にコンパイル」オプションがあります。 JRebelパネルの2列目のチェックボックスはチェックされていません。クラスライブラリは、EJBモジュールとWARモジュールの両方のモジュールに追加されています。私はそれがJRebelの手の届かないところにあるとは思っていません。そして、「*リモート・サーバをセットアップするためのプロジェクト・プロパティを公開しています*」というメッセージは不必要です。 – Tiny

答えて

3

ツールバー上の同期ボタンを使用して偶然か?リモートサーバー機能を使用していない場合は、サーバーがローカルホスト上で実行されていることを正しく指摘しているので、これを押す必要はありません。クラスファイルの変更はファイルシステムから直接取得され、サーバーに接続されたJRebelエージェントは、各アーティファクトのrebel.xmlのおかげで更新されたクラスを見つけることができます。

さらに、プロジェクトが実行されている間(少なくともスタンドアロンプ​​ロジェクトの場合)は、8.1 NetBeansでビルドディレクトリのsave時にクラスファイルが更新されるとは限らないため、チェックボックスに示されているようにクラスが更新されることを確認します。クラスファイルが更新されない場合、NetBeansコンパイラには、曖昧に記述されているFAQがあります。これは、既存のクラスが内部コンパイラによってコンパイルされていない場合、NetBeansが古いクラスに対して自動的にコンパイルしないことを意味します。むしろAntまたはMavenによって行われます。

  • は、既存のクラスを削除するクリーンを実行して、NBは
  • build/classesまたはtarget/classesフォルダ
  • .netbeans_automatic_buildという名前の空のファイルを作成した内部コンパイラを使用してクラスを構築持つように実行します。それを解決するためのコツは、いずれかのことです

これで問題が解決しない場合は、前述のように[email protected]までお問い合わせください。問題を再現した後、としてトレースレベルjrebel.logを送信してください。リロードしようとしていたクラス名とこのSO質問にリンクしてください。

+0

変更は私が前に気付かなかった「同期」ボタンを押すことなく自動的に伝播されます。現在残っている唯一の問題は、CleanまたはClean&Buildが役に立たないクラスライブラリです。クリーンまたはクリーン&ビルドが完了した後、サーバーは 'JRebel:Reloading class 'エンティティ.Inquiry'.'、' JRebel:Reinitialized class'エンティティ.Rating _ $$ _ jvstc82_20 'のような情報をログに記録します。再ロードされますが、これらのクラスの1つ以上への変更は反映されません。 2番目の試みでは、ドットで始まるファイル名はオペレーティングシステムによって受け入れられません。 – Tiny

+0

EJBモジュール(WildFly-ejb)とWebモジュール(WildFly-war)の両方に追加されたクラスライブラリがJRebelに到達せず、クラスライブラリ自体が変更されていない限り、このクラスライブラリの変更は反映されません両方のモジュールに最初から再び取り付けられました。 – Tiny

+0

ログラインによれば、クラスは実際に再ロードされているように見えるので、コンパイルの問題ではありません。どのような変更を行っていましたか?コンストラクタは変更されますか?静的イニシャライザが変更されますか?特定のフレームワークの変更のいくつかの種類ですか? –

関連する問題