0

Eclipseのプロジェクトのresourcesフォルダーにファイルがあります。このドキュメントをJavaファイルにロードする方法が必要です。望ましい表現はInputStreamにあります。

いくつかの検索に基づいて次のことを試しましたが、機能していないようで、理由がわかりません(nullになる)、助けていただければ幸いです

InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf");
4

2 に答える 2

0

リソースがコンパイル済みクラスと同じフォルダーにあることを確認してください。Eclipseは使用していませんが、Netbeansはビルド時に「classes」フォルダを自動的に作成します。パッケージ内にあるクラス、つまりorg.website.PDFReader、は、クラスの完全修飾名(つまり、パッケージ名+クラス名)の後に、「classes」フォルダの下に一連のサブディレクトリを持ちます。とにかく、これらのパッケージ化されたクラスの「親ディレクトリ」は「classes」フォルダのままです。

当面は、リソースをそのクラスフォルダに手動で配置してください。ビルド時にEclipseがリソースを適切なフォルダーに自動的にコピーするようにする方法はほぼ確実にあります(以下を参照)。

最後に、コードで、先頭の「/」を「/ Project/...」から削除します。

その先頭の「/」を削除すると、クラスのクラスローダーの親ディレクトリ(この例では「classes」フォルダー)を基準にしたリソースの場所になります。そのスラッシュを保持すると、リソースの場所が「絶対」になり、親ディレクトリからの相対位置になりません。

編集:次の質問は、このプロセスのよりEclipse固有の詳細に役立つはずです:EclipseのJava:getResourceを使用してロードしたいファイルをファイルシステムのどこに置くのですか?(たとえば、ImageIconの画像)。受け入れられた回答の最初のコメントも確認してください。

于 2012-09-11T21:48:40.217 に答える
0

引数として渡す文字列は、呼び出し元のクラスに相対的なgetResourceAsStream場所であるか、または任意のソースフォルダの先頭に。が付いている絶対的な場所である必要があります。getResourceAsStream/

したがってresources、プロジェクト内のソースフォルダー(Eclipseではパッケージのような小さな記号でマークされている)であれば、getClass().getResourceAsStream("/BlankPDF.pdf")機能するはずです。

例:プロジェクトに次のフォルダーとパッケージがあり、ソースフォルダーが:でマークされているとします*

Project
    src*
        com.package.foo
            MyClass.java
    resources*
        BlankPDF.pdf

次に、MyClass.class.getResourceAsStream("/BlankPDF.pdf")(先頭/、絶対)とMyClass.class.getResourceAsStream("../../../BlankPDF.pdf")(先頭なし/、相対)の両方でファイルを取得する必要があります。

于 2012-09-11T22:03:12.210 に答える