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