问题描述
我正在处理具有许多已编译 .jasper 报告的遗留 Java 应用程序。
最近,与我合作的办公室 IT 公司部署应用程序的方式发生了变化,报告停止工作,应用程序不再能够在文件系统上找到报告。
我更新了构建,以便将报告包含在classpath
,并且FileNotFoundException
消失了。
但是,现在报告仅呈现部分内容。 一些参数、标题基本上任何与 Scriptlet 无关的内容都可以完美呈现,但与 Scriptlet 相关的任何内容都只呈现空值。
我发现只有一种方法可以解决这个问题。 如果我将 .jasper 文件与 .java 文件内联并通过 eclipse 动态运行应用程序,那么 Scriptlets 也会正确呈现。 如果我从另一个位置加载它们并通过 eclipse 运行应用程序,则返回空值。
我的发行版使用 One-Jar 来捆绑我的依赖项。
路径可以影响Scriptlet 渲染吗? 我已经确认 .jasper 文件的 md5 在 eclipse 内部和外部加载时匹配,所以我相信在每种情况下都加载了相同的文件。
1楼
Jasper Reports 与项目不兼容。
它没有在任何地方记录,但是通过 one-jar 重写路径“preending main”的方式,它将无法找到 scriptlet。 不幸的是,在这种情况下,Jasper 似乎默默地失败了。