我遇到了 JaspersoftStudio 的问题。我有一个工作项目,其中包含一个定义自定义转换函数的库。最近我的 .jrxml 视图找不到我的函数了。
单击文件夹[PROJ_ROOT]/set1中file1.jrxml的预览时,会引发以下错误消息:
"The method AUTO_CONVERT(String) is undefined for the type file1_1434540912649_515329"
AUTO_CONVERT 位于[PROJ_ROOT]/src/de/companyname/packagename/MyClass.java,传递给它的所有变量都是字符串类型。MyClass.java 中的示例:
package de.companyname.packagename;
..
@FunctionCategories({ de.companyname.packagename.MyClass.class })
public class MyClass {
..
@Function("AUTO_CONVERT")
@FunctionParameters({ @FunctionParameter("aString") })
public static String AUTO_CONVERT(String aString) {
...
jasperreports_messages.properties 文件包含在 [PROJ_ROOT]/src 中(也尝试将其移动到与 Myclass 相同的目录):
de.companyname.packagename.MyClass.name = MyClass
de.companyname.packagename.MyClass.description=Custom Functions
de.companyname.packagename.MyClass.AUTO_CONVERT.name = Auto Convert
de.companyname.packagename.MyClass.AUTO_CONVERT.description= Descr
jasperreports_extension.properties,也在 [PROJ_ROOT]/src 中:
net.sf.jasperreports.extension.registry.factory.functions=net.sf.jasperreports.functions.FunctionsRegistryFactory
net.sf.jasperreports.extension.functions.test=test
以前我设法通过修改构建路径设置并简单地添加项目根目录(现在不会改变任何东西)来解决这些问题。我的函数不出现在表达式编辑器中。
JasperSoft 在“确认”我的 src 文件夹时似乎也存在某种问题。不再在项目资源管理器中显示像 src 目录这样的文件夹并将de/companyname/packagename作为子元素,而是将src/de/companyname/packagename显示为一个单独的元素。我的类包名被标记为红色,并期望 src 作为前缀(src.de.companyname.packagename而不是de.companyname.packagename)
我可以通过在项目根目录中选择 New->SourceFolder 来欺骗 JasperSoft “确认” src 文件夹,但这会在一段时间后被 JasperSoft 的一些魔法改回来。
移动到 de/companyname/packagename 并在没有 src 的情况下工作修复了 packagename 问题,但我的视图仍然无法识别我的自定义类。
我的课程路径如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="net.sf.jasperreports.JR_CONTAINER"/>
<classpathentry exported="true" kind="con" path="com.jaspersoft.server.JRS_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
任何人都知道可能出了什么问题以及如何解决这个问题?我很确定它一定与项目设置有关。简单地创建一个新的也无济于事。
奇怪的是,当我选择 FunctionsLibrary 向导并让 JSoft 创建示例方法 + 示例报告时,预期的 hello world 函数失败,并出现 JRExpressionEvalException 用于 Hello World 消息。如果相关-草率的例子还是我的错误?
谢谢
更新:
我通过这样做修复了奇怪的 src 文件夹行为:.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry excluding="src/" kind="src" path=""/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="net.sf.jasperreports.JR_CONTAINER"/>
<classpathentry exported="true" kind="con" path="com.jaspersoft.server.JRS_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>