私はjasperレポートを生成するJavaプロジェクトを持っています。ファイル(レポート)のパスを指定してプロジェクトを実行すると問題なく実行されますが、JARファイルを友人に渡す必要がある場合は、常にそのファイルを配置する必要があります私のコードがファイルパスを取得し、そこにファイルを配置する必要がある特定のフォルダーで、私のコードはいくつかのアイデアを提供するために以下にあります
public void generateReport(String dateStart, String dateEnd) {
InputStream stream = null;
Connection connection = null;
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/app", "root", "");
stream = new FileInputStream(new File("").getAbsolutePath() + "/reports/logReport.jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(stream);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, connection);
//frame.getContentPane().add(dateSetter, BorderLayout.PAGE_START);
frame.getContentPane().add(new JRViewer300(jasperPrint), BorderLayout.CENTER);
frame.setResizable(false);
frame.setSize(900, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
isVisible = true;
connection.close();
stream.close();
}
コード内で、指定されたパスからファイルを取得します
/reports/logReport.jrxml
しかし、JARファイルを別の場所に置いて実行すると、エラーが発生します
C:\Desktop\reports\logReport.jrxml で指定されたパスが見つかりません。
コード部分new File("").getAbsolutePath()
が原因であることはわかっていますが、プロジェクト内から常にファイルパスを取得するようにする方法を知る必要があります! その特定のファイルを常にそこに配置する必要がないように!