0

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

MyClass.class.getResource(ApplicationConstants.ALIASESFILE).getPath(); 

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

D:\javaProjects\AutomodeGS_Prachi\lib\internal\RESTWSGS.jar!\aliases\aliases.csv

ファイルが見つからないという例外が発生しました。何が問題なのですか?

4

2 に答える 2

2

これはglassfishからは正常に機能します。これは、glassfishがファイルシステム上でjarを分解したため、csvファイルが実際にはファイルシステムへのファイルであるためです。

別のプロジェクトから読み込もうとすると、ファイルを含むjarがクラスパスにあるため失敗しますが、csvファイルはjarファイルの下にあり、もはやFile

あなたはそれをストリームとして読むことができます

InputStream is = MyClass.class.getResourceAsStream(ApplicationConstants.ALIASESFILE); 
于 2013-01-21T05:02:11.523 に答える
2

このgetResource()メソッドは「jar:」URLを返します。そのURLのパスコンポーネントは通常のファイルシステムパス名ではなく、Javaのファイルクラスを使用して直接開くことはできません。

これを行う簡単な方法は、を使用Class.getResourceAsStream(...)してストリームを開くことです。JARエントリの「識別子」が必要な場合は、を使用しますClass.getResource(...)が、を使用してストリームを開きますURL.openStream()

于 2013-01-21T05:03:44.140 に答える