【问题标题】:TypeError: Cannot call property getEncoder in objectTypeError:无法在对象中调用属性 getEncoder
【发布时间】:2022-02-03 18:15:41
【问题描述】:

我正在尝试在 javascript 中使用 java 包 Base64 对字节数组进行编码。 Javascript 引擎是 Rhino。

以下是日志中的错误。

java.util.concurrent.ExecutionException: javax.script.ScriptException: TypeError: Cannot call property getEncoder in object [JavaPackage java.util.Base64]. It is not a function, it is "object". 

下面是sn-p代码

var md = java.security.MessageDigest.getInstance('SHA-256');
md.update(salt);
var sha256Bytes = []
sha256Bytes=md.digest(new java.lang.String(givenPassword).getBytes('UTF-8'));
var sha256Hash = java.lang.String(java.util.Base64.getEncoder().encode(sha256Bytes));

我无法在这里找出问题所在。此外,还导入了包 java.util.Base64.*。

【问题讨论】:

  • 您使用的是哪个版本的 Rhino 以及如何启动脚本?我刚刚测试了它(Rhino-1.7.14.jar),它对我来说很好,结果给了我一个 Base64 编码的字符串。
  • 我使用的是 JS 脚本引擎:Rhino 1.7.13
  • 您没有提及如何启动脚本。我用从here下载的Rhina-1.7.14 jar 测试
  • 我受版本限制。仅支持 Rhino 1.7.13
  • 你解决了吗?

标签: javascript base64 encode sha256 rhino


【解决方案1】:

我导入了类 java.util.Base64$Encoder。早些时候我将它导入 java.util.Base64.Encoder 。不确定 $ 与 '.' 相比有何不同。 .但是,我假设我的应用程序以这种方式导入静态类。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2013-03-27
    • 2019-05-25
    • 1970-01-01
    • 2017-08-06
    • 2021-02-02
    • 1970-01-01
    • 2021-09-08
    • 2021-02-23
    相关资源
    最近更新 更多