0

それ自体が別の Web プロジェクトの Web アプリケーションである jar ファイルを使用しようとしています。Eclipse の jar 機能へのエクスポートを使用して作成した jar では、フクロウ ファイルをフォルダーに保存しました。jar のコードで相対パスを使用するには、次を使用してアクセスします

MyClass.class.getResource("/folderName").getPath(); 

これは、(glassfish) を展開し、プロジェクトを別のアプリケーションとして使用すると正常に機能します。しかし、別のプロジェクト内から同じものを使用している場合、パスを次のように変更しました。

 BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

ArrayList<File> filesFromCommonOntology = new ArrayList<File>();
while(str = br.readLine() != null)
{
  File f = new File(line);
  System.out.println(f);
  filesFromCommonOntology.add(f);
}
for (int i = 0; i < filesFromCommonOntology.size(); i++)
{

file =  filesFromCommonOntology.get(i);
    String filePath = file.getPath();
    Model timeModel = FileManager.get().loadModel(filePath,
ApplicationConstants.N3);
  }

しかし、プロジェクトを実行すると、行のヌルポインター例外が発生します

BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

アプリケーションが jar にパッケージ化されている場合、フォルダー内のファイルを列挙することはできません。これがどのように機能するかを想像することさえ困難です。フォルダーを inptu ストリームとして開き、(そのフォルダー内の) ファイル名をそのように読み取りますか?

最も簡単な方法は、フォルダ内のエントリを含むテキスト ファイルを追加することです。おそらくいくつかの説明が含まれています。MyClass.class.getResourceAsStream は、jar からファイル (フォルダーではなく) を開く必要があります。

非常に多くのファイルがある場合は、独自の jar を ZipFile として再度開くこともできます。その後、ZipFile API を使用してフォルダー内のエントリを検索できます。ただし、これはより複雑です。

于 2013-02-02T10:25:08.950 に答える