我遇到了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 中, 传递给它的所有变量都是String类型。 来自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函数失败,并显示Hello World消息的JRExpressionEvalException。如果相关 - 草率的例子或我的错误?
由于
更新
我通过这样做修复了奇怪的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>