使用JSON编写脚本的数据源在Java类中工作时不使用BIRT

使用JSON编写脚本的数据源在Java类中工作时不使用BIRT,java,eclipse,json,birt,alfresco,Java,Eclipse,Json,Birt,Alfresco,我将用几句话来描述代码行,在alfresco中,我需要使用其工作流API创建一个报告,该API响应为JSON,我在这个链接中找到了使用JSON作为数据源的解决方案(这将是充分理解我的问题的很好参考): 我下载了源代码,了解了它的工作原理,最后我遇到了一个问题“身份验证问题”,并通过编辑源文件“JSONParser.java”解决了它。无论如何,我现在还有另一个问题,我有以下java代码正在工作: package com.actuate.json.test; import java.io.IOE

我将用几句话来描述代码行,在alfresco中,我需要使用其工作流API创建一个报告,该API响应为JSON,我在这个链接中找到了使用JSON作为数据源的解决方案(这将是充分理解我的问题的很好参考):

我下载了源代码,了解了它的工作原理,最后我遇到了一个问题“身份验证问题”,并通过编辑源文件“JSONParser.java”解决了它。无论如何,我现在还有另一个问题,我有以下java代码正在工作:

package com.actuate.json.test;
import java.io.IOException;
import com.actuate.json.JSONParser;
public class TestJSONParse_OutBound {
    public static void main(String[] args) {
        try{
            JSONParser theParser = new JSONParser();
            theParser.loadData("http://localhost:8080/alfresco/service/api/workflow-definitions/activiti$CS-Outbound-WFPD:5:403/workflow-instances?state=active&format=json","admin","admin");
            System.out.println("Number of jobs found: " + theParser.getChildCount("data") + "\n");
            for(int i = 0; i < theParser.getChildCount("data"); i++){
                System.out.println(String.valueOf(i + 1) + ")  " + theParser.getValue("data", "description", i));
                System.out.println("\tID: " + theParser.getValue("data", "id", i));
                System.out.println("\tURL: " + theParser.getValue("data", "url", i));
                System.out.println("\tUsername: " + theParser.getValue("data", "initiator/firstName", i));
            }
        }catch (IOException ioe) {
            // TODO: handle exception
        }catch(Exception ex){

        }
    }
}

但在eclipse IDE no luck 1中的BIRT报告中,我在脚本化数据源中指出:

count = 0;
controller = new Packages.com.actuate.json.JSONParser();
controller.loadData(params["JSONURL"],params["USERNAME"],params["PASSWORD"]);
totalCount = controller.getChildCount("data");
并获取数据集表中的行,如:

if(count < totalCount){
    row["id"] = controller.getValue("data", "id", count);
    row["url"] = controller.getValue("data", "url", count);

    count++;
    return true;
}
return false

真的,我不知道问题是什么,也不知道如何解决,如果有人对此有任何想法,我花了大约一周的时间在上面,但没有解决方案…

我会检查你的课程路径,确保每个罐子只有一个副本——我的直觉是,你可能至少有一个旧的和新的副本,这让人困惑it@Gagravarr我想所有JAR都被复制了,我下载了“httpcomponents client 4.0”,并将所有JAR作为外部JAR放在eclipse上,用于我的项目,并将其复制到alfresco上的WEB-INF/lib(将JSONParser类作为jar文件),我忘了把它们放在第一位,我得到了Class Not Found Exception,但现在你看到了我在那之后遇到的问题…这些步骤不能确保没有重复的jar。我会仔细检查,特别是com.actuate、birt和rhino jarsAsk类加载器,将类作为资源提供给你,然后打印URL并检查它是否来自你期望的jard、 例如,查找不同的jar作为start@Gagravarr嗯,谢谢,在我试图找到加载的类之后,由于某种原因,JSONParser类没有加载,alfresco没有看到。
if(count < totalCount){
    row["id"] = controller.getValue("data", "id", count);
    row["url"] = controller.getValue("data", "url", count);

    count++;
    return true;
}
return false
WARNING: Fail to execute script in function __bm_OPEN(). Source:
------
" + count = 0;
controller = new Packages.com.actuate.json.JSONParser();
controller.loadData(params["JSONURL"],params["USERNAME"],params["PASSWORD"]);
totalCount = controller.getChildCount("data"); + "
-----
A BIRT exception occurred. See next exception for more information.
Error evaluating Javascript expression. Script engine error: TypeError: [JavaPackage com.actuate.json.JSONParser] is not a function, it is object. (/report/data-sources/script-data-source[@id="8"]/method[@name="open"]#2)
 Script source: /report/data-sources/script-data-source[@id="8"]/method[@name="open"], line: 0, text:
__bm_OPEN()
org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_OPEN(). Source:
------
" + count = 0;
controller = new Packages.com.actuate.json.JSONParser();
controller.loadData(params["JSONURL"],params["USERNAME"],params["PASSWORD"]);
totalCount = controller.getChildCount("data"); + "
-----
A BIRT exception occurred. See next exception for more information.
Error evaluating Javascript expression. Script engine error: TypeError: [JavaPackage com.actuate.json.JSONParser] is not a function, it is object. (/report/data-sources/script-data-source[@id="8"]/method[@name="open"]#2)
 Script source: /report/data-sources/script-data-source[@id="8"]/method[@name="open"], line: 0, text:
__bm_OPEN()
    at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:147)
.
.
.
Caused by: org.mozilla.javascript.EcmaError: TypeError: [JavaPackage com.actuate.json.JSONParser] is not a function, it is object. (/report/data-sources/script-data-source[@id="8"]/method[@name="open"]#2)
.
.
.