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になります。