Maximo JS自动化脚本:未定义"importPackage"



我正在尝试使用来自Maximo 76脚本功能(PDF下载(的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

为什么我会收到此错误?

将此添加到脚本的开头:

load("nashorn:mozilla_compat.js");

详:

来自自动化脚本:与 Maximo 7.6.1 的兼容性:

。Rhino JavaScript引擎被Nashorn(V8(取代。 它 事实证明,Nashorn不允许导入整个Java。 软件包阐明了我收到错误的原因。

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

load("nashorn:mozilla_compat.js");

本文介绍了如何正确构造脚本 利用新的脚本引擎。

来自 Maximo 76 脚本功能(PDF 下载(。

Java 8 和 Nashorn 引擎:

上面的一些示例是使用 基于 JDK 7 的 Rhino JS 引擎。在 jdk 1.8 中,犀牛引擎已经 替换为纳肖恩(V8(发动机。例如导入包 命令在那里不起作用。您需要使用 JavaImporter 函数在 Nashorn 中执行相同的操作。你可以看看这个 stackoverflow 链接,了解从 Rhino 到 Nashorn可能会影响js中的脚本代码:

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

根据 Rhino 迁移指南,您可以尝试这样的事情:

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

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

var ctx = new HashMap();

最新更新