[解決済み] グルービーです。Grabインクルージョンとクラスパスインクルージョンの違いは?
2022-02-16 19:29:23
質問
1. 一般的に、@Grape/@Grab のインクルージョンとクラスパスのインクルージョンはどのように違うのでしょうか?
2. 具体的には、以下のような動作の違いが生じると思われますが、どのようなことが考えられますか?
の要件があるんだけど
xpp3
と表現しています。
// TestScript.groovy
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
import org.xmlpull.v1.XmlPullParserFactory;
println "Created: " + XmlPullParserFactory.newInstance()
実行中
$ groovy TestScript.groovy
で失敗します。
Caught: org.xmlpull.v1.XmlPullParserException: 原因は次のとおりです。
しかし、もし私が Grapeによって取得された.jarをGroovyのクラスパスに手動で追加します。 :
$ groovy -cp ~/.groovy/grapes/xpp3/xpp3/jars/xpp3-1.1.3.4.O.jar \
TestScript.groovy
...すると、すべてがうまくいきます。
解決方法は?
Grab は ivy を使用して、指定されたライブラリ(およびその依存関係のすべて)を maven コアリポジトリから取得します。そして、これらのダウンロードされたライブラリを、現在のスクリプトを実行しているローダーのクラスパスに追加します。
クラスパスへの jar の追加は、指定された jar をシステムのクラスパスに追加するだけです。
この例では依存関係がないので、おそらくライブラリがシステムのクラスローダーによってロードされる必要があることが要求されているのでしょう。
これを確認するために
@GrabConfig(systemClassLoader= true)
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
現在、1行のGrabの代わりに
関連
-
[解決済み] groovyで乱数を使うにはどうしたらいいですか?
-
グルーヴィーな使い方
-
JSONを処理するGroovy
-
Groovyテンプレートエンジン
-
[解決済み] groovy.lang.MissingMethodException を修正する方法。メソッドのシグネチャがありません。
-
[解決済み] クラスパスとは何ですか、どのように設定するのですか?
-
[解決済み] Javaでクラスパスからテキストファイルを本当に読み込む方法
-
[解決済み] Groovyでファイルを文字列に読み込むには?
-
[解決済み】クラスパス・ディレクトリからリソースのリストを取得する
-
[解決済み] Jenkinsfile (groovy)から変数に使用して実行されたシェルコマンドの出力を取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 名前付きパラメータ
-
[解決済み] Groovyで文字列をint型に変換する
-
[解決済み] groovyで乱数を使うにはどうしたらいいですか?
-
[解決済み] グルービーです。Grabインクルージョンとクラスパスインクルージョンの違いは?
-
[解決済み] groovy.lang.MissingMethodException を修正する方法。メソッドのシグネチャがありません。
-
[解決済み] groovyのfindResultsとcollectの違いは何ですか?
-
グルーヴィーな使い方
-
Groovyテンプレートエンジン
-
[解決済み] Groovyで文字列を置換する方法
-
[解決済み] groovy.lang.MissingMethodException を修正する方法。メソッドのシグネチャがありません。