質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

4330閲覧

eclipse4.3+spring4-1-6+Maven+glassfish3.1環境で外部jarがデプロイ対象から漏れる

gcodeb2

総合スコア8

GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/10/30 00:44

編集2017/10/30 08:51

JAVAでの開発初心者です。

現在、以下の環境で開発を行っています。
windows7
・eclipse4.3 kepler
・spring 4-1-6
・Maven
・glassfish3.1

外部jarがデプロイの対象から漏れている状態です。
ビルドはできるのですが、ローカルのglassfishにデプロイした結果に
外部jarが反映されません。

起動すると以下のメッセージがコンソールに表示され動作しない状態です。

イメージ説明

いろいろ調べた結果、
[プロジェクト右クリック]→[プロパティー]→[デプロイメント・アセンブリー]に外部jarを登録すれば解決するとあったため実施したのですが、症状は同じのままです。

イメージ説明

また、[ウィンドウ]→[設定]→[java]→[ビルド・パス]→[ユーザライブラリー]にも外部jarは追加しています。

イメージ説明

他に何か足りないものがあるのでしょうか。

ちなみに、
[プロジェクト右クリック]→[プロパティー]→[デプロイメント・アセンブリー]から外部jarを除去すると、[問題]に以下のメッセージが表示されます。

クラスパス・エントリー org.eclipse.jdt.USER_LIBRARY/[外部jar] は、エクスポートまたは公開されません。実行時に ClassNotFoundExceptions が発生する可能性があります。

よろしくお願いします。

追記(2017.10.30 17:50)
さまざまなサイトから調査をしたところ、maven-dependency-pluginをpom.xmlに追加すると
良いとありましたが、
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. 
とm2eに怒られるうえ、結局WEB-INF/libに対象のjarは無かった。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/30 03:42 編集

外部jarは mvn install:install-file でローカルリポジトリに追加でやらんと
gcodeb2

2017/10/30 03:46

ありがとうございます。[プロジェクト右クリック]→[実行]→[maven install]を実行して再度確認してみましたが、同じ現象が発生しました。。。
kuniku

2017/10/30 10:05 編集

eclipseの maven intall ではなく、install-file を指定します。のちほど回答を追加します。
guest

回答1

0

ベストアンサー

https://qiita.com/KevinFQ/items/e8363ad6123713815e68
の「サードパーティJARをローカルリポジトリにインストールする。」
のように、外部jarを追加する場合の一例として

apache maven がローカル作業用PCに配置済みとして、

例えば、oracleのjdbcドライバ(けっこう古いやつ)をローカルリポジトリ.m2に置く場合は、

sh

1cd jarのある場所 2mvn install:install-file -Dfile=ojdbc14-10.2.0.3.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

を実行して、pomファイルに、依存性を追加します。

xml

1<dependency> 2 <groupId>com.oracle</groupId> 3 <artifactId>ojdbc14</artifactId> 4 <version>10.2.0.3.0</version> 5</dependency>

また、上記とは異なり、ローカルリポジトリにinstallしない場合は
eclisepのプロジェクト直下のディレクトリに、lib ディレクトリを作成し、そこにpostgresql-9.4.1212.jarを置いた場合は
以下のように、systemPathとscopeを設定することで、ローカルリポジトリに置かなくてもmavenの依存性に追加できると思います

xml

1 <!-- postgreSQL --> 2 <dependency> 3 <groupId>org.postgresql</groupId> 4 <artifactId>postgres</artifactId> 5 <version>9.4.0-1212.jdbc4</version> 6 <scope>system</scope> 7 <systemPath>${basedir}/lib/postgresql-9.4.1212.jar</systemPath> 8 </dependency>

投稿2017/10/30 10:03

kuniku

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gcodeb2

2017/10/30 10:53

kuniku様 ありがとうございます。 <dependency>は頂いた下のパターン<scope>system</scope>の形で追加しています。 Mavenの依存関係の下に外部jarが入っているのも確認できました。 mvn install:install-file はコマンドプロンプトから実施するものと思われますが 'mvn' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出てしまいます。どこかmvnが実施できるパスへ移動する必要があると思いますが、どこかご存知でしょうか。
退会済みユーザー

退会済みユーザー

2017/10/30 23:01

公式サイトからダウンロードしてもいいのよ apache maven
gcodeb2

2017/10/31 00:05

asahna1979様 ありがとうございます。 mvnコマンドを実施するには、新たなダウンロードが必要なのですね。 すると、ハードルが上がってしまいます^^; 新たなプログラムのダウンロードには非常に厳しく 必要性と安全性を説明しないと許可が下りない・・・
gcodeb2

2017/10/31 05:40

kuniku様 ありがとうございます。頂いたURLを参考に[pom.xml右クリック]→[実行]→[実行の構成]から[Maven build]を選択し[ゴール]を以下として実行したところ、BUILD SUCCESSとなりました。 install:install-file -Dfile=外部jarのパス(フォルダまで) -DgroupId=外部jar.jar -DartifactId=外部jar.jar -Dversion=1.0.0 -Dpackaging=jar -DgeneratePom=true しかし、状況は変わりませんでした・・・
kuniku

2017/10/31 05:58 編集

状況が変わらないのは、Library not found xxx.jar ということでしょうか? 現状では、 以下の、a) b) c) の対応くらいしか思いつかないです。 d) は特殊な対応です a )eclipseのデプロイメント・アッセンブリーでは、個別指定のjarは外れてますか? b )eclipseのパッケージエクスプローラで、maven依存関係のツリー表示で、追加したjarは表示されてますか?  c )eclipseのプロジェクトクリック→Maven →プロジェクトの更新 は、試されてますか? d) glassfish 側のキャッシュなどの問題かな? eclipse上でのglassfishの設定を再度、し直すのを試したり、glasfishのバックアップをとって、 {インストール先}/domains/domain1 /applications の domain2 等を作成して、domain2側をeclipse側から認識させて利用してみるとか。
gcodeb2

2017/11/01 00:50

kuniku様 ありがとうございます。はい、Library not found :が出てしまいます。 状況をご連携いたします。 a)デプロイメント・アセンブリーで個別jarは入っています。 b)パッケージエクスプローラ→プロジェクト右クリック→プロパティ→Javaビルドパス→Maven依存関係に追加したjarは入っています。 c)プロジェクト右クリック→Maven→プロジェクト更新を試してみました。 ここまでで、もう一度試しましたが、Library not found :になります。 dを試してみます。
kuniku

2017/11/01 07:50

他の策を考えてみました a) デプロイメント・アセンブリーで個別jarは、mavenの依存関係に入っているのであれば不要と思うので除去する。除去したところで変わらないと思いますが。 e) javaのビルドパスで、ライブラリの追加→ユーザ・ライブラリー で設定している 外部.jar はmavenの依存関係に追加済みなので、削除してみる f) javaのビルドパスで、「ライブラリの追加」→ユーザ・ライブラリー で設定している 外部.jarを、「jarの追加」の方を選択してビルドパスに追加する。jarは、どこかのプロジェクトにjar を置く または プロジェクト直下/lib/外部.jar などで良いです。 g) glassfishに詳しくないのですが、domains/domain1/lib/外部.jar のように、glassfishそのものに読み込みされるようにする。コンテキスト/WEb-INF/lib として読み込ませない。ただし外部.jar が共有ライブラリとして動くことに対応していることが前提。
gcodeb2

2017/11/02 04:50

kuniku様 ありがとうございます。 上記はまだ試せていないのですが、MavenでpackageしてWarを作成し、別の環境にデプロイしてみたところ、どういうわけか外部Jarを使う機能が正常に使えていました。。。 なお、昨日急な別件が入ってしまい、試す時間が取れなくなってしまいました。一旦この質問は閉じさせていただきたいと思います。 kuniku様、いろいろご確認いただきありがとうございました。 頂戴したご回答を機会を見て試したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問