まず、私のプロジェクトの構造を少し入力します。
これは、次の 3 つのモジュールで構成される Web ショップ プロジェクトです。
- EJB
- リモート デスクトップ クライアント
- ウェブクライアント
関連する NetBeans プロジェクトは全部で 6 つあります。
- すべてのモジュールを含むメイン EE プロジェクト。
- EJB モジュール プロジェクト
- Web クライアント モジュール プロジェクト
- リモート クライアント モジュール プロジェクト
- EJB リモート インターフェイスのクラス ライブラリ プロジェクト
- エンティティ クラスの「単純化された」形式であるクラスを含むクラス ライブラリ プロジェクト。これらは、元は EJB モジュール プロジェクトに配置されていました。元のエンティティ クラスの代わりにこれらのクラスを使用することにした理由は、リモート クライアント アプリケーションに配布するときに、それらのクラスをシリアライズ/デシリアライズする際に問題があったためです。
ここで、これらのプロジェクトが互いにどのように接続されているかを説明します (上記のリストを参照して)。
- EJB プロジェクトには #5 と #6 への参照が含まれています
- Web クライアント プロジェクトには #2 への参照が含まれています
- リモート クライアント プロジェクトには、#2、#5、および #6 への参照が含まれています
- EJB リモート インターフェイス プロジェクトには #6 への参照が含まれています
したがって、基本的に、すべてのプロジェクト (Web モジュールを除く) には、単純化された、または「カプセル化された」形式のエンティティ クラスを含むプロジェクトへの参照が含まれています。
この EE アプリケーション (メインの EE プロジェクト) を GlassFish (v 4.0) にデプロイしようとすると、プロジェクト #6 で定義されているクラスがプロジェクト #5 に表示されないというエラーが発生し続けます。プロジェクト #5 のリモート インターフェイスで使用される、プロジェクト #6 で定義されたこの「製品」クラスが 1 つあります。コードの書き込み中に、参照が正しく配置されているため、この問題に関するエラーは発生しませんでした。また、メインの EE プロジェクトのクリーンアップとビルドは正常に完了しますが、デプロイ時に同じエラーが発生し続けます。
package musicshop.entity.encapsulated does not exist
import musicshop.entity.encapsulated.Product;
注:musicshop.entity.encapsulated
その「製品」クラスを含むプロジェクト #6 のパッケージです。また、これimport musicshop.entity.encapsulated.Product;
はプロジェクト #5 の 1 つのリモート インターフェイスからの行です。
また、GlassFish からアプリケーションをアンデプロイして再デプロイしようとするまで、すべてが正常に機能していたという事実に言及することも重要です。