3

学校の課題で、JNDIとJMS with Glassfish(3オープンソース版)を使用したNetbeansプロジェクトを受け取りました。このアプリケーションが使用しているすべてのGlassfishライブラリは絶対パスで参照され、他のすべてのライブラリ(「lib」フォルダ内)は相対パスで参照されます。

私のグループはバージョン管理システムを使用しているため、「lib」フォルダーがリポジトリに含まれています。小さなプロジェクトなので、これは問題なく機能します。ただし、私はLinuxユーザーであり、他のユーザーはWindowsユーザーであるため、Glassfishライブラリには問題があります。Netbeansにライブラリパスを処理させることで、この問題を回避しました。

選択したソリューションは「機能します」が、最善のソリューションではありません。Mavenがより良い解決策になると思いました。

ただし、「gf-client」ライブラリには問題があります。Mavenの「gf-client」を使用するたびに、アプリケーションは例外をスローします。

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

どちらのライブラリにもバージョンとして「3.1.2」があります。ライブラリの構造は同じように見え、両方のMANIFEST.MFファイルも同じです。ただし、両方のファイルのサイズとmd5sumは等しくありません。

デフォルトのMavenリポジトリにあるすべての「gf-client」ライブラリを試しましたが、どれも機能しませんでした。他のライブラリは私に問題を与えません。

4

1 に答える 1

9

これを私のpom.xmlに追加することで解決できました:

<dependency>
    <groupId>org.glassfish.main.extras</groupId>
    <artifactId>glassfish-embedded-all</artifactId>
    <version>3.1.2</version>
</dependency>

gf-client jarは、他のjarのクラスを参照しています。それが欠けていた最初のクラスはおそらくjava.naming.factory.initialでした。しかし、これを修正した後でも、他のクラスがたくさん必要でした。私にとって最も簡単な方法は、glassfish-embedded-all依存関係を追加することでした。

于 2012-04-12T11:53:13.183 に答える