Ошибка при "maven install" в eclipse: пакет net.sf.jasperreports.engine не существует - PullRequest
0 голосов
/ 16 декабря 2011

Я пытаюсь начать работу с Jasper Reports с Spring Batch.

Рабочая среда: RAD 7.5 (так затмение!), Maven

У меня самая простая из всех программ Spring Batch содна работа с одним тасклетом, который ничего не делает, а печатает HELLO WORLD.

Это работает нормально.

После этого - я копирую файл jar отчетов jasper в папку lib моего проекта.Щелкните правой кнопкой мыши по проекту -> Перейти к свойствам -> Путь сборки -> Добавить файлы Jar -> Выберите файл jasper report jar и нажмите кнопку ОК.

Хорошо до сих пор.

Теперь в моей программе тасклетов я просто добавляю следующую строку:

JasperReport jasperReport;

Поскольку я объявляю переменную типа JasperReport, затмение кричит об импорте класса.

Я нажимаю на пузырек с ошибкой (красный пузырь с крестиком), который показывает затмение, и в нем указан правильный класс сверху jar, который я добавил в путь к классам.Я выбираю рекомендацию по импорту, и ошибка исчезла.

Теперь я сохраняю файл -> Щелкните правой кнопкой мыши проект -> Запуск от имени -> Maven-Install и вот оно:

Mavenжалуется:

Compilation failure
C:\Nikunj\Sandbox\Reporting\src\main\java\com\in\nik\example\util\GenerateReportTasklet.java:[12,35] package net.sf.jasperreports.engine does not exist

C:\Nikunj\Sandbox\Reporting\src\main\java\com\in\nik\example\util\GenerateReportTasklet.java:[25,8] cannot find symbol
symbol  : class JasperReport
location: class com.in.nik.example.util.GenerateReportTasklet

Проверено 100 раз.Пакет есть в банке.Класс там в банке.Если его нет, затмение не будет отображаться.Его не показывать.Значит его там.

Мой GenerateReportTasklet:

package com.hsbc.us.pb.custody.util;

import net.sf.jasperreports.engine.JasperReport;

import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;


public class GenerateReportTasklet implements Tasklet {

    public RepeatStatus execute(final StepContribution arg0, final ChunkContext arg1) throws Exception {

        JasperReport jasperReport;

        System.out.println("Hello Report!");

        return null;
    }

}

Я не могу понять, что мне не хватает.

Пожалуйста, не советуйте добавлять банку в качестве зависимости в моемPOM.xml Я легко могу это сделать.

Но я знаю, что то, что я пытаюсь сделать выше, должно работать, а оно не работает.Я хочу добраться до корня этого.

Есть идеи?

Я знаю, это не имеет значения, но я скачал банку с java2s.com:

http://www.java2s.com/Code/Jar/JKL/Downloadjasperreportsjar.htm

Спасибо за чтение !!

1 Ответ

0 голосов
/ 16 декабря 2011

Когда вы компилируете с Eclipse, тогда Eclipse создаст путь к классам для компиляции. Если вы скажете Eclipse, что вам нужен JAR, то Eclipse включит этот JAR в путь к классам компиляции, и ваша компиляция будет работать.

То же самое происходит с Maven, за исключением того, что способ сообщить Maven, что вам нужен JAR, - добавить его в качестве зависимости в POM.

Вы не ожидаете, что Eclipse узнает (без вашего ведома), что вам нужен определенный JAR. Почему вы ожидаете что-то другое от Maven?

Примечание: Maven, независимый от IDE инструмент, не знает о конфигурации вашего проекта Eclipse - хотя вы можете сделать обратное и настроить Eclipse для настройки своего classpath из объявленных POM зависимостей.

...