java如何操作js
操作 JavaScript 的几种方法
使用 Java 内置的 ScriptEngine
Java 提供了 javax.script 包,可以通过 ScriptEngine 执行 JavaScript 代码。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JsExample {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
engine.eval("var x = 10; var y = 20; var z = x + y;");
Object result = engine.eval("z");
System.out.println("Result: " + result); // 输出 30
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
使用 Nashorn 引擎(Java 8-14)
Nashorn 是 Java 8 默认的 JavaScript 引擎,性能优于 Rhino(旧版引擎)。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class NashornExample {
public static void main(String[] args) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("print('Hello from Nashorn!');");
}
}
使用 GraalVM 的 JavaScript 引擎(Java 15+)
从 Java 15 开始,Nashorn 被移除,推荐使用 GraalVM 的 JavaScript 引擎。
import org.graalvm.polyglot.Context;
public class GraalJsExample {
public static void main(String[] args) {
try (Context context = Context.create("js")) {
context.eval("js", "console.log('Hello from GraalVM!');");
}
}
}
使用第三方库(如 Rhino)
如果需要在较旧版本的 Java 上运行 JavaScript,可以使用 Mozilla 的 Rhino 引擎。

<!-- Maven 依赖 -->
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7.14</version>
</dependency>
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
public class RhinoExample {
public static void main(String[] args) {
Context context = Context.enter();
try {
Scriptable scope = context.initStandardObjects();
Object result = context.evaluateString(scope, "3 + 4", "test", 1, null);
System.out.println("Result: " + Context.toString(result)); // 输出 7
} finally {
Context.exit();
}
}
}
调用 JavaScript 函数并传递参数
可以在 Java 中调用 JavaScript 函数,并传递参数。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class CallJsFunction {
public static void main(String[] args) {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
try {
engine.eval("function add(a, b) { return a + b; }");
Object result = ((javax.script.Invocable) engine).invokeFunction("add", 5, 7);
System.out.println("Result: " + result); // 输出 12
} catch (ScriptException | NoSuchMethodException e) {
e.printStackTrace();
}
}
}
使用 Selenium 操作浏览器 JavaScript
如果需要在浏览器中执行 JavaScript,可以使用 Selenium WebDriver。
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumJsExample {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("alert('Hello from Selenium!');");
driver.quit();
}
}
注意事项
- 安全性:执行外部 JavaScript 时需注意代码注入风险。
- 性能:
ScriptEngine适用于简单脚本,复杂逻辑建议使用 Node.js 或其他专业引擎。 - 兼容性:Java 15+ 需使用 GraalVM 替代 Nashorn。






