4

Eclipseのソースパッケージ(つまり、/ src / resources /images/または/resources/ images /)の内部または外部のリソースフォルダーにリソース(画像、PDF)を含む実行可能なJARを作成する方法を知りたいです。現在、eclipseプロジェクトのソースフォルダー内にリソースがありますが、パッケージ内の独自のフォルダー内でも試してみました。プログラムはEclipseで正常にビルドおよび実行されますが、実行可能なjarとしてエクスポートしようとすると、デスクトップで実行したときにファイルが見つからないという例外が発生し続けます。このような文字列でファイルを宣言しています

private String file =  "src/resources/orderForm.pdf";

getResourceAsStream()を使用する必要があることは理解していますが、いくつかの制約により、使用できません(ファイルの保存方法に関係しているため、ストリームとしてではなく、PDFファイル全体を読み取っています)。ファイルをjar内の正しい場所に配置します。作成後に解凍すると、常に最上位のフォルダの外に表示されます。これが私の現在のプロジェクト構造のスクリーンショットです。言うまでもなく、このプロジェクトはEclipseで正常に機能します。また、Javaビルドプロパティでも、ソースフォルダーはすべてのサブフォルダーとともにビルドパスにあります。以前のテストでは、空のリソースフォルダーでも同じことを試しました。 ここに画像の説明を入力してください

4

2 に答える 2

6

getResourceAsStreamを実行し、PDFがjarに組み込まれていることを確認する必要があります。ソースフォルダにあるので、そうする必要があります。

src / resources / orderForm.pdfの下にpdfがあるとすると、それはjarファイルに/resources/orderForm.pdfとして保存されます。/resources/orderForm.pdfのリソースストリームを開きます。

正直な善意のファイルが必要な場合は、PDFをリソースストリームとして読み取り、FileOutputStreamsで一時ファイルに出力してからファイルを使用するコードが必要になります。または、PDFをjarファイルにパッケージ化することはできません。

public class PDFWriter {

public static final String testDir = "C:\\pdftest\\"; 
public static final String adobePath = "\"C:\\Program Files\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe\"";

public static void main(String[] args){

    try {
        new PDFWriter().run();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void run() throws Exception {
    InputStream in = this.getClass().getResourceAsStream("/resources/test.pdf");
    new File(testDir).mkdirs();
    String pdfFilePath = testDir + "test.pdf";
    FileOutputStream out = new FileOutputStream (pdfFilePath);
    byte[] buffer = new byte[1024];
    int len = in.read(buffer);
    while (len != -1) {
        out.write(buffer, 0, len);
        len = in.read(buffer);
    }
    out.close();

    Runtime rt = Runtime.getRuntime();
    String command = adobePath + " " + pdfFilePath;
    rt.exec(command);
}

}

Eclipseでファイルの方法がまったく機能しない唯一の理由は、binフォルダーが実際のフォルダーであるためですが、Thingをビルドすると、すべてがjarに圧縮されます。

たぶん、ソースフォルダについて少し混乱しています。'src'というソースフォルダがある場合、その下のパッケージ構造には"src"が含まれていません。src / net / whatever / Class.javaは、ビルド時にnet / whatever/Class.classに変わります。

したがって、「rsrc」(リソース)という2番目のソースフォルダーを作成し、その下にresources/order.pdfを配置できます。jarをビルドすると、rsrc / resources/order.pdfはresources.order.pdfになります。

于 2013-01-31T23:43:32.923 に答える
1

常に考えずにEclipseから簡単にエクスポートできるように、リソースフォルダーをフォルダーの下に配置することをお勧めしsrcます。簡単に言うと、フォルダに入れないとsrc、jarを作成するたびに、resourcesフォルダの横にあるチェックボックスをオンにする必要があります。だから、それをsrcフォルダに入れて、いくつかの問題を自分で保存してください。

ファイルの参照については、

private String file = "resources/finished.pdf";

これにより、の下のファイルにアクセスできますsrc/resources/finished.pdf

于 2013-01-31T23:39:53.783 に答える