我正在使用JDeveloper 11.1,Oracle 11和TIBCO JasperReports 6.0.1。
在使用ApplicationModule(Model - EJB)执行此操作时,我在尝试从我的网页(ViewController)生成Jasper Reports时遇到问题。最后,PDF文件必须通过电子邮件发送,这就是我让它进入模型项目的原因。
如果我执行ApplicationModule,它可以正常工作,没有例外,PDF生成和发送非常好。
但是,如果我从网页上执行客户端方法,我就会遇到此异常:
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;
^
我只是粘贴一个片段。
我正在使用其他.jars作为POI,用于读取.xlsx文件并插入数据库,因此我不知道为什么我可以毫无问题地访问POI但同时我没有Jasper Reports可用
我已经在网上搜索了一些解决方案,但没有解决我的问题。我得到了一些关于 jdt-compiler 的信息,但我没有在JasperReports套件中找到它。我的项目实际上是所有这些库的混乱,也许我缺少或添加太多?
目前我的EAR项目是这样的:
EAR \ lib:
对于罐子设置或类似的东西,这是一个问题。我已经找到了这个页面,但这很奇怪,我认为我的问题不是那么复杂。
http://docs.oracle.com/cd/E25178_01/fusionapps.1111/e15524/adv_wls_e.htm
编辑1:
我试图使用以下代码查看我的类路径:
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for (URL url: urls) {
logger.info(String.format("Classpath: %s.", url.toString()));
}
我得到了这个输出。 POI不在这里,但为什么,我在没有任何问题的情况下使用它而我没有能力使用JasperReports?
1)WebLogic 10.3基本安装中是否默认使用POI.jar? 否
编辑2:
我发现在 WebLogic 中访问 weblogic.utils.classloaders.GenericClassLoader 是必要的,它会向我发送属于此EAR应用程序的所有库。使用它,Jasper Reports可用,但我不知道如何成功访问它们......
GenericClassLoader jre = (GenericClassLoader) JREvaluator.class.getClassLoader();
logger.info(String.format("jre: %s, s.", jre, jre.getClassPath()));
非常感谢你,
答案 0 :(得分:2)
好吧,有人说有必要使用 jdt-compiler-3.1.1.jar 。我将它添加到 / lib 文件夹中,现在它正在运行。
这个.jar不在 TIBCO Jasper Reports 6.0.0 的安装产品中,这真的很奇怪,实际上我下降到JR 3.7.6这是最低版本。该文件来自 28/12/2008 ...
...尼斯
答案 1 :(得分:1)
我使用了eclipse ecj-4.3.1.jar并且它有效。
答案 2 :(得分:1)
首先检查jasperReports的依赖关系 - 例如版本6.1.0 - https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports/6.1.0
通过这个,您可以看到lib目录(webApp)或.jar中是否缺少任何依赖项(如果它是java的主要应用程序)。
这个错误也发生在我身上,我通过添加依赖来解决它
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.3.1</version>
我希望它能支持你