@DDwrt100

Как в JasperReport указать относительный путь до файла отчета?

Добрый день всем.
Подскажите пожалуйста, как правильно указать в JasperReports относительный путь до файла шаблона отчета.
Сейчас столкнулся с проблемой, что пока работаю с неупакованной программой(запускаю из ide) отчет генерируется.
Однако стоит мне собрать проект, он выбрасывает java.io.FileNotFoundException.
Файл отчета попадает при сборке в Jar. Однако судя по всему он не может обратиться в сам запущенный архив.
путь к файлу отчета формирую так
StringBuilder constructReportPlace = new StringBuilder();
constructReportPlace.append(runPath);
constructReportPlace.append("/src/main/resources/reports/Report.jasper");
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
есть неск спсб -

1. относительно проекта
System.err.println(
String.format("%s/src/main/resources/%s",
	System.getProperty("user.dir"), resourceFileName));

2. относитльно того где лежит jar которого выполняют:
System.err.println(
	String.format("The running application resource path: \"%s\"", 			 
		Thread.currentThread().getContextClassLoader()
			.getResource("").getPath()));


ну и там дальше есть вариации

this.getClass().getClassLoader()
	.getResourceAsStream(

- это для из jar емнип.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DDwrt100 Автор вопроса
наверное что то делаю не так, но не получается.
String reportPlace =  String.format("\"%sreports/Task.jasper", 			 
			    Thread.currentThread().getContextClassLoader()
			      .getResource("").getPath());

      InputStream std = new FileInputStream(reportPlace);

     JasperReport jasperReport = (JasperReport) JRLoader.loadObject(std);


отдает 500 ошибку
"status": 500,
  "error": "Internal Server Error",
  "message": " \"file:\\D:\\Java\\Spriп\\target\\Tot.jar!\\BOOT-INF\\classes!\\reports\\Task.jasper (Синтаксическая ошибка в имени файла, имени папки или метке тома)",
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы