0

JARファイルからリソースにアクセスすることについて少し質問があります。プロセッサという名前のNetbeansIDEを使用してJavaクラスライブラリを作成しました。と呼ばれるパッケージがprocあり、次にと呼ばれるテキストファイルがありますtoRead.txtMain.javaそして今、私はプロセッサライブラリを使用するようなクラスを持つ別のJavaアプリケーションを持っています。

InputStreamテキストファイルを取得するために、次のコードを使用しました

ClassLoader cl = ClassLoader.getSystemClassLoader();
InputStream is = cl.getResourceAsStream("proc/toRead.txt"); 

Main.javaで。

今は逆にやりたいです。プロセッサライブラリでInputStreamtoを取得したい。Main.java上記と同じコードを試しましたが、機能しません。

InputStreamこのライブラリのソース自体をどのように取得できますか?

4

3 に答える 3

0

私の推測では、アプリケーションを実行するか、JARにバンドルすると、Main.javaファイルはもう存在しません。これは、ほとんどのIDEがソースコードフォルダとは別のフォルダにクラスをコンパイルするためである必要があります。Javaコンパイラは、TXTファイルやGIFファイルなどの他のリソースを保持することに注意してください。そのため、プログラムを実行すると、テキストファイルを読み取ることができます。

@TechExcahngeが述べたように、本当にMain.javaファイルを読み取る必要がある場合は、手動でJARにパッケージ化する必要があります。これは、ZIP形式をサポートする任意のプログラムで実行できます。

于 2013-01-29T06:53:25.100 に答える
0

リソースを含む jar ファイルが ClassPath にあることを確認してください。

これを試して:

public InputStream getResourceUnderJarAsStream(){
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
return inputStream;
}
于 2013-01-29T07:03:40.273 に答える
0

SystemClassLoaderapplication classloader自分のクラスをロードしないか、自分のクラスをロードしませんuser classloader

このコードを試してください:

 public class TestRead{
    public static void main(String [] args){
        InputStream is = TestRead.class.getResourceAsStream("proc/toRead.txt");
    }
 }
于 2013-01-29T06:53:52.767 に答える