1

これはおそらく非常に基本的な質問ですが、Java で依存関係を管理することは私にとって悪夢です。Liferay portelt (JBoss AS 6 にデプロイされた Liferay 6.05) があり、そこでバティックを使用しようとしています。Eclipse で batik.jar (およびおそらくディストリビューションの他の jar) を参照すると (プロパティ -> ビルド パス -> 外部 jar を追加)、IDE はすべてが正常であると表示し、エラーは表示されません。

しかし、ポートレットをサーバーにデプロイすると、ClassNotFoundException が発生します。ポートレットは、以前に参照した jar を検出しません。問題は、ローカル マシンでこれらの jar を参照しているだけで、それらがサーバーに存在しないことだと思います (ポートレットの WEB-INF/lib ディレクトリにもデプロイされません)。

それらの瓶を別の場所にコピーする必要がありますか?liferay ディレクトリのどこかに Perhpas がありますか? それともJBOSS ASを展開したディレクトリへ?

ヒントをありがとう。これが紛らわしすぎるように聞こえる場合は、自分自身をより明確にしようとします...

4

1 に答える 1

4

カスタム ポートレットが正しく機能するためには、依存関係の jar がポートレットの か、または のようなサーバーのグローバル クラスパスに存在する必要WEB-INF/libがあります。/liferay-portal-6.0/jboss/server/default/lib.../lib/ext

したがって、同じ依存関係の jar を使用して多くのポートレットを開発している場合、それらをサーバーのグローバル クラスパスに保持できます。jar のいずれかを変更する必要がある場合は、サーバーを再起動する必要があります。このようにして、すべてのポートレットと liferay ポートレット (フックなどでバティック クラスを使用することを考えている場合) でさえ、バティック jar にアクセスできます。

または、ANT や MAVEN などのビルド ツールを使用している場合は、WAR ファイルの作成中に実行され、必要な jar をWEB-INF/libWAR 内のポートレットに自動的にコピーするスクリプトを作成できます。

または、WEB-INF/lib手動で開発するすべてのポートレットに既にコピーしておくこともできます:-)

于 2013-05-27T09:30:37.440 に答える