如何在Java程序中包含JavaScript文件
How to include JavaScript file in Java program
我有这个脚本文件使用phantomjs创建
var webPage = require('webpage');
var page = webPage.create();
page.open(URL, function (status) {
var content = page.content;
console.log('Content: ' + content);
phantom.exit();
});
现在我想在 Java 程序中使用此脚本,但我不能。我在我的项目中这样做
ScriptEngineManager s = new ScriptEngineManager();
ScriptEngine se = s.getEngineByName("JavaScript");
se.eval(new FileReader("myScript.js"));
但"这就是结果
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "require" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at provaJavaScript.Client.main(Client.java:15)
Caused by: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "require" is not defined. (<Unknown source>#1)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3770)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3748)
at sun.org.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3833)
at sun.org.mozilla.javascript.internal.ScriptRuntime.getNameFunctionAndThis(ScriptRuntime.java:2218)
at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1510)
at sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:162)
at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(ContextFactory.java:430)
at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116)
at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109)
at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(ScriptRuntime.java:3160)
at sun.org.mozilla.javascript.internal.InterpretedFunction.exec(InterpretedFunction.java:173)
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1169)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214)
... 2 more
我该怎么办?
编辑:我将这一行放在我的代码中:
Process process = Runtime.getRuntime().exec("/usr/bin/phantomjs myScript.js");
但这行不通。程序返回与以前相同的错误。我能做什么??
Require不是标准javascript的一部分,而是NodeJS的一个特性。你的JAVA程序不知道如何处理它。
另请参阅此问题及其接受的答案:
这个Javascript"需要"什么?
脚本引擎无法访问对象(require)
由PhantomJS/nodejs添加到JavaScript
您可以使用 exec
执行幻像。类似的东西
// You need the correct path for phantomJs
Process process = Runtime.getRuntime().exec("/usr/bin/phantomjs myScript.js");
请参阅 https://stackoverflow.com/a/16891381/227299
相关文章:
- 如何在Symfony2中的表单小部件中包含javascript
- Android键盘不适用于包含Javascript的网页
- 在document.write中包含javascript的原因
- Google图表HTML工具提示,其中包含javascript onclick事件
- 将包含 javascript 的文本绑定到模板中的 innerHTML
- 加载包含 Javascript 的外部 PHP 文件
- 将外部 SVG 和包含 JavaScript 加载到 HTML 中
- Orchard - 在分部视图中包含 Javascript 文件
- 如何检查列表是否包含 javascript 中的字符串
- 验证字符串是否仅包含 javascript 中的某些字符
- 在另一个Javascript文件中包含Javascript文件并加载
- 有没有可能在asp-mvc4中使用ajax呈现的视图中包含javascript
- 使用script标记通过CSS文件在程序中包含JavaScript
- 在Phoenix Framework应用程序的某些页面上包含Javascript
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- 如何仅在尚未包含Javascript和css文件的情况下才包含它们
- 添加包含JavaScript而非URL的书签
- Jade包含JavaScript文件的最佳实践
- 如何检查 NS 字符串是否包含 javascript 函数
- 如何使用Javascript Twig模板正确地包含Javascript