代码之家  ›  专栏  ›  技术社区  ›  user3318476

从Pentaho Kettle调用Java库

  •  2
  • user3318476  · 技术社区  · 11 年前

    我开发了一个导出到.jar库中的java类,Pentaho Kettle“修改的java脚本”将调用它。jar在Eclipse中编译,JDC合规性级别为1.7。

    当我试图在“修改的java脚本”中使用这个类时,我得到了错误:ReferenceError:xeroCallPackage未定义。到目前为止,我已经尝试了很多事情,但没有太多运气。

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

    有关信息:

    精简的(为简单起见)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 回复  |  直到 11 年前
        1
  •  1
  •   peete    11 年前

    你要么必须 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);