在Java 8中使用Rhino

Java将Nashorn作为JSR 223的新JavaScript实现(javax.scripting)。 尽管这无疑是个好消息(通过直接生成Java代码,Nashorn比Rhino快得多),但它也带来了一些挑战:

Nashorn与Rhino并非100%兼容

Rhino对如何将Java世界与JavaScript结合使用进行了一些扩展和或多或少的其他解释。 因此,您不能简单地用Nashorn代替Rhino。 一种情况(毁了我们的时代)是您不能在实例上调用静态方法。 因此,我们必须在Java 8中启动Rhino并使其运行,直到我们重新编写脚本为止。

尽管java.net中提供了广泛的文档,但仍然有些混乱(某些URL错误,缺少一些步骤)。 因此,以下是对我们有用的步骤:

  1. 下载Rhino: https : //github.com/downloads/mozilla/rhino/rhino1_7R4.zip
  2. 下载JSR-223:svn结帐svn结帐https://svn.java.net/svn/scripting~svn
    是的,URL中的〜!
  3. cd脚本〜svn / trunk / engines / javascript / lib
  4. 从rhino1_7R4.zip将js.jar复制到此目录(替换现有的js.jar)
  5. cd ../make
  6. 蚂蚁清理所有
  7. 将../build/js-engine.jar和js.jar(Rhino的)复制到您的类路径中
  8. 现在更改:ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName(“ js “);可以:

    ScriptEngineManager管理器= new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName(“ rhino ”);

这就是将Rhino移植到Java 8所需要的。

翻译自: https://www.javacodegeeks.com/2015/04/using-rhino-with-java-8.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CryptoJS 是一个 JavaScript 库,用于实现各种加密算法,包括 AES、DES、RSA、SHA-1、SHA-256 等。如果你想在 Java 使用 CryptoJS,你需要先将 CryptoJS 库转换为 Java 代码。这可以通过使用 Rhino 解释器来实现。 以下是一个简单的步骤: 1. 下载 Rhino 解释器:https://github.com/mozilla/rhino/releases 2. 下载 CryptoJS 库:https://github.com/brix/crypto-js/releases 3. 将 CryptoJS 库解压缩到某个目录。 4. 在解压后的 CryptoJS 目录找到 `core.js` 文件,并使用文本编辑器打开它。 5. 复制整个文件的内容,然后将其粘贴到一个新的 Java 类文件。 6. 使用 Java 的 `ScriptEngineManager` 类和 `ScriptEngine` 接口,将 CryptoJS 脚本引擎加载到 Java 应用程序。 7. 使用 `ScriptEngine` 接口的 `eval` 方法来执行 CryptoJS 脚本。 以下是示例代码: ``` import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.FileReader; import java.io.IOException; public class CryptoJSExample { public static void main(String[] args) throws ScriptException, IOException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); engine.eval(new FileReader("path/to/crypto-js/core.js")); engine.eval(new FileReader("path/to/crypto-js/aes.js")); String plaintext = "Hello, world!"; String key = "1234567890123456"; String iv = "1234567890123456"; String encrypted = (String) engine.eval("CryptoJS.AES.encrypt(\"" + plaintext + "\", \"" + key + "\", { iv: \"" + iv + "\" }).toString()"); System.out.println(encrypted); String decrypted = (String) engine.eval("CryptoJS.AES.decrypt(\"" + encrypted + "\", \"" + key + "\", { iv: \"" + iv + "\" }).toString(CryptoJS.enc.Utf8)"); System.out.println(decrypted); } } ``` 在这个示例,我们使用了 CryptoJS 的 AES 加密算法来加密和解密字符串。我们通过 Rhino 解释器将 CryptoJS 库加载到 Java 应用程序,并使用 `eval` 方法来执行 CryptoJS 脚本。注意,我们需要在字符串转义引号和反斜杠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值