Jasper Reports “package net.sf.jasperreports.engin

2019-02-26 02:10发布

问题:

I'm using JDeveloper 11.1, Oracle 11 and TIBCO JasperReports 6.0.1.

I'm having problems trying to generate Jasper Reports from my web page (ViewController) while using an ApplicationModule (Model - EJB) for doing that. At the end the PDF file has to be sent via email, that's why I let it into the Model project.

If I execute the ApplicationModule, it works fine, no exceptions, the PDF is very well generated and sent.

However, if I execute the client method since a web page I got this exception :

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:4: package net.sf.jasperreports.engine does not exist
import net.sf.jasperreports.engine.*;
^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:5: package net.sf.jasperreports.engine.fill does not exist
import net.sf.jasperreports.engine.fill.*;
^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:18: cannot find symbol
symbol: class JREvaluator
public class Simple_Blue_1429546047623_56582 extends JREvaluator
                                                     ^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:25: cannot find symbol
symbol  : class JRFillParameter
location: class Simple_Blue_1429546047623_56582
    private JRFillParameter parameter_REPORT_LOCALE = null;
            ^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:26: cannot find symbol
symbol  : class JRFillParameter
location: class Simple_Blue_1429546047623_56582
    private JRFillParameter parameter_Description = null;
            ^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:27: cannot find symbol
symbol  : class JRFillParameter
location: class Simple_Blue_1429546047623_56582
    private JRFillParameter parameter_JASPER_REPORT = null;
            ^
C:\Users\rodmar\AppData\Roaming\JDeveloper\system11.1.1.7.40.64.93\DefaultDomain\Simple_Blue_1429546047623_56582.java:28: cannot find symbol
symbol  : class JRFillParameter
location: class Simple_Blue_1429546047623_56582
    private JRFillParameter parameter_REPORT_VIRTUALIZER = null;
            ^

I'm just pasting a fragment.

I'm using other .jars as POI, for reading .xlsx files and inserting then into database so I don't know why I can access POI without any problem but at the same time I don't have Jasper Reports available.

I have already searched some solutions in the web but nothing solves my problems. I get some information about jdt-compiler but I don't find it into JasperReports suite. My project is really a mess with all these libraries, maybe I'm missing or adding too many ?

My EAR project at the moment is like this :

The EAR\lib:

This is a kind of a problem for jars settings, or something like that. I had already found this page but it is really strange, I don't think that my issue is something so complicated.

http://docs.oracle.com/cd/E25178_01/fusionapps.1111/e15524/adv_wls_e.htm

EDIT 1 :

I tried to look to my classpath using this code :

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for (URL url: urls) {
    logger.info(String.format("Classpath: %s.", url.toString()));
}

And I get this output. POI is not here but why, I'm using it without any problems while I'm not been capable of using JasperReports ?

1 ) Is POI.jar by default used in WebLogic 10.3 basic installation ? NO

EDIT 2 :

I've discovered that in WebLogic is necessary to access weblogic.utils.classloaders.GenericClassLoader which sends me all the libraries that belong to this EAR application. Using it, Jasper Reports are available however I don't know what to do to access them successfully...

GenericClassLoader jre = (GenericClassLoader) JREvaluator.class.getClassLoader();
logger.info(String.format("jre: %s, s.", jre, jre.getClassPath()));

Thanks you very much,

回答1:

Well, as somebody says it was necessary to use jdt-compiler-3.1.1.jar. I added it to /lib folder and now it is working.

It's really strange that this .jar is not in the installation product for TIBCO Jasper Reports 6.0.0 actually I descend until JR 3.7.6 which is the lowest version. The file is from 28/12/2008...

Nice...



回答2:

I used eclipse ecj-4.3.1.jar and it works.



回答3:

First checks the dependencies of jasperReports - for example version 6.1.0 - https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports/6.1.0

With this you can see if there is any dependency that is missing in your lib directory (webApp) or inside your .jar (if it is a main application of java).

That mistake also happened to me, and I solved it by adding dependence

<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.3.1</version>

I hope it supports you