Jasper Reports "package net.sf.jasperreports.engine does not exist" exception in JDeveloper 11.1 using WebLogic only in EAR Web Page

Rodmar Conde picture Rodmar Conde · Apr 20, 2015 · Viewed 10.7k times · Source

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 :

EAR project

The EAR\lib:

EAR\lib contents

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,

Answer

Rodmar Conde picture Rodmar Conde · Apr 28, 2015

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...