1

com.me.X.jarでプログラムを実行しています。

外部のcom.me.Y.jarには、Jar のルートにある「 config/conf.txt 」に構成ファイルがあります。

Java 内からプログラムでこの構成ファイルにアクセスするにはどうすればよいですか?

com.me.Y.jarは現在メモリーにロードされておらず、コード以外のリソースのみで構成されています。

4

3 に答える 3

2

jar ファイルは単なる zip ファイルです。zipファイルを読む方法の例については、Googleで検索してください。または API ZipInputStreamを見てください

于 2013-01-18T22:30:42.703 に答える
2

埋め込みリソースを読み取るための最も簡単なオプションは、Class.getResourceまたはを使用することですClass.getResourceAsStream

あなたのニーズに応じて、これを達成するためのいくつかの方法を考えることができます。

com.me.Y.jarをクラスパスに追加します。これは、システム レベル (あまりお勧めしません) またはコマンド ラインで行うことができます...

java -cp com.me.Y.jar -jar com.me.X.jar

編集上記のコマンドを使用する と、明らかに-cp引数が無視されることが指摘されていますが、メインクラスを含めると機能します... java -cp com.me.Y.jar -jar com.me.X.jar com.me.x.Main(たとえば)

それが不便な場合は、自動的に含まれるcom.me.Y.jarマニフェストcom.me.X.jar のクラスパスに追加できcom.me.Y.jarます。

それができない場合は、 a を使用しURLClassLoaderて直接ロードできますcom.me.Y.jar...

URL[] urls = new URL[]{new File("/path/to/com.me.Y.jar").toURI().toURL())};
URLClassLoader classLoader = new URLClassLoader(urls);
URL resource = classLoader.findResource("/config/conf.txt");

または、必要に応じて、単に を使用して瓶を割ることもできますが、java.util.JarFileそれは核でクルミを割るように思えます...私見

于 2013-01-18T23:19:42.140 に答える
1

URL取得コード

URL configURL = this.getClass().getResource("/config/conf.txt");

Manifest.mfcom.me.X.jar

JAR ファイルのクラスパスへのクラスの追加を参照してください。

Main-Class: ...
Class-Path: com.me.Y.jar
于 2013-01-18T22:43:57.750 に答える