从Pentaho Kettle调用Java库

时间:2014-03-05 08:41:51

标签: java class package pentaho kettle

我开发了一个导出到.jar库中的java类,该库将由Pentaho Kettle'修改过的java脚本'调用。 .jar在Eclipse中编译,JDC符合级别为1.7。

当我尝试在“修改的java脚本”中使用此类时,我收到错误:ReferenceError:未定义“xeroCallPackage”。到目前为止,我已经尝试了很多没有太多运气的东西。

我的文件xeroCallPackage.jar位于Pentaho中其他* .jar文件的路径中(.. \ data-integration \ lib)

有关信息:

简化(为简单起见)java库代码在这里:

package xeroCallPackage;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.Map;

public class xeroURLCall {

    public String getResponse(String CONSUMER_KEY, String CONSUMER_PRIVATE_KEY, String URL) throws IOException, OAuthException, URISyntaxException { 

        // stripped out code here
        return response.readBodyAsString();
    }

}

剥离的Pentaho'修改过的java脚本'在这里:

var CONSUMER_KEY = "ffffff";
var CONSUMER_PRIVATE_KEY = "aaaaa";
var URL = "https://gggggggg.rrrrr.wwww";

var ResponseAsString;

ResponseAsString = new     xeroCallPackage.xeroURLCall.getResponse(CONSUMER_KEY,CONSUMER_PRIVATE_KEY,URL);

1 个答案:

答案 0 :(得分:1)

您必须将org作为最顶层的套餐,或者使用Packages作为您班级的完全限定名称的前缀。

因此,在您的情况下,可用于从Spoon调用的类的完全限定名称将为Packages.xeroCallPackage.xeroURLCall

除此之外,提供的JavaScript代码不起作用(但可能只是因为剥离的代码)。您必须先创建一个xeroURLCall对象,然后在该对象上调用getResponse方法:

var call = new Packages.xeroCallPackage.xeroURLCall(...);
var responseAsString = call.getResponse(CONSUMER_KEY,CONSUMER_PRIVATE_KEY,URL);