【问题标题】:Maximo JS automation script: "importPackage" is not definedMaximo JS 自动化脚本:未定义“importPackage”
【发布时间】:2019-11-05 19:04:05
【问题描述】:

我正在尝试使用来自 Maximo 76 脚本功能 (PDF download) 的 JS 脚本。

importPackage(java.util)
importPackage(Packages.psdi.server)
var ctx = new HashMap();
ctx.put("url","http://localhost:7001/maximo/oslc/script/countryapi?_lid=wilson&_lpwd=wilson");
service.invokeScript("LIB_HTTPCLIENT",ctx);
var jsonResp = ctx.get("response");
var countries = JSON.parse(jsonResp);

当我执行脚本时出现此错误:

ReferenceError: "importPackage" is not defined in <eval> at line number 1

为什么会出现此错误?

【问题讨论】:

    标签: javascript compiler-errors package nashorn maximo


    【解决方案1】:

    将此添加到脚本的开头:

    load("nashorn:mozilla_compat.js");
    

    详情:

    来自Automation Scripts: Compatibility with Maximo 7.6.1

    ...Rhino JavaScript 引擎被 Nashorn (V8) 取代。它 原来 Nashorn 不允许导入整个 Java 包 阐明了我收到错误的原因。

    将以下行添加到脚本的开头:

    load("nashorn:mozilla_compat.js");

    This article references 如何正确构建脚本以 利用新的脚本引擎。

    来自 Maximo 76 脚本功能 (PDF download)。

    Java 8 和 Nashorn 引擎:

    上面的一些例子是用 基于 jdk 7 的 rhino js 引擎。在 jdk 1.8 中,犀牛引擎已经 替换为 Nashorn (V8) 发动机。 例如 importPackage 命令在那里不起作用。您需要使用 JavaImporter 在 Nashorn 中执行相同的功能。你可以看看这个 stackoverflow 链接,了解更多关于从 Rhino 到 可能会影响您在 js 中的脚本代码的 Nashorn:

    http://stackoverflow.com/questions/22502630/switching-from-rhino-to-nashorn

    【讨论】:

      【解决方案2】:

      根据Rhino Migration Guide,你可以试试这样的:

      var HashMap = Java.type("java.util.HashMap");
      

      因为它的工作原理类似于导入,所以您可以在之后使用它:

      var ctx = new HashMap();
      

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        • 1970-01-01
        • 2021-05-18
        相关资源
        最近更新 更多