Tag: nashorn

如何parsingXML在JavaScript Nashorn引擎?

我试图在服务器端运行JavaScript(与Nashorn),并在JavaScript代码,parsing一个XML文件。 我们不能默认这样做:我们需要加载一些特定的.js库(DOMParser等)。 我尝试过使用Node.js模块'XMLDOM',它可以不使用Node.js,如下所示: https : //github.com/jindw/xmldom/wiki/How-to-use-xmldom-in-non -node.js的JavaScript的平台样的Rhino或-的SpiderMonkey 但是这个页面带来了一个新的问题:我们需要将这些.js文件的负载封装在对象中,他们给了我们一个例子: var dpObj = {}; loadObject ( dpObj, "dom-parser.js" ); (如果我们只是以一种经典的方式加载.js文件,它不起作用) 我不知道如何编写这样的'loadObject'函数,但它可能是解决scheme。 也许我们也可以使用Nashorn内的'require'库? 也许有一个很好的替代XMLDOM模块? 有什么build议么 ? PS 1:我尝试了'env.rhino.1.2.js'( http://www.envjs.com )作为XMLDOM模块交替,但是这个脚本甚至不能被Nashorn加载… PS 2:我也尝试parsingJava中的XML,并使用JavaScript内的结果,但我不知道如何转换对象(我有一个org.w3c.dom.Document对象插入,但这是不一样的作为JavaScript的DOM文件…我有例如gesDescendant方法丢失或类似的东西)。

在Java应用程序示例中embedded头像JS

使用Java 8,我想以编程方式加载一个JavaScript文件,并使用阿凡达JS执行它(节点env支持)。 我也想用Maven来pipe理依赖关系。 这里是我正在使用的简单的Nashorn片段,我想扩展它以支持Node.JS模块,理想情况下使用阿凡达JS。 ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); InputStream in = getClass().getClassLoader().getResourceAsStream("js/hello-world.js"); String result = (String)engine.eval(new InputStreamReader(in)); System.out.print(result); 相关的Mavenconfiguration也如下所示: <repositories> <repository> <id>nexus-snapshots</id> <name>Nexus Snapshots</name> <url>https://maven.java.net/content/repositories/snapshots/</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.oracle</groupId> <artifactId>avatar-js</artifactId> <version>0.10.32-SNAPSHOT</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>libavatar-js-linux-x64</artifactId> <version>0.10.32-SNAPSHOT</version> <type>pom</type> </dependency> </dependencies> 我觉得阿凡达有很多很好的function,但是我正在努力寻找任何体面的文档或例子。 任何人都可以提供一个如何做到这一点的代码示例?

如何写一个string到Javascript的标准输出

我感兴趣的是写一个string到标准输出的可移植的方式,没有隐式的新行添加到最后,理想情况下迫使编码为UTF-8,与任何 jrunscript(来自任何JDK) 犀牛 的node.js 我当前的代码尝试检测它正在运行的位置,然后使用特定于平台的写入方法: if (typeof process !== "undefined") { // assume node.js var log = function(string) {process.stdout.write(string);}; } else if (typeof println == "undefined") { // assume rhino var log = function(string) {java.lang.System.out.write(java.lang.String(string).getBytes("utf-8"));}; } else { // assume jrunscript var log = function(string) {java.lang.System.out.print(string);}; } log("X"); log("Y"); 它应该导致: XY 这能做得更好吗? 对于jrunscript,我一直使用函数print ,但是代替JDK-8021773在JDK-8中改变了它的行为。

如何运行与Nashorn反应的babel.transform?

我正在尝试使用babel.transform而不是JSXTranformer来做出反应。 … ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine nashorn = mgr.getEngineByName("nashorn"); nashorn.eval("var process = {env:{}}"); // node-modules expect that nashorn.eval(getScript("com/facebook/babel/jvm-npm.js")); babel = (JSObject) nashorn.eval("require('babel');"); … Babel和babel-core被安装为全局节点模块,并且出现错误: testing套件:com.my.app.BabelTransformerTest 找不到模块./lib/api/node.js 无法加载模块babel-core LOAD_ERROR 无法加载模块babel LOAD_ERROR 无法加载模块babel-core LOAD_ERROR 无法加载模块babel LOAD_ERROR 找不到模块./lib/api/node.js 无法加载模块babel-core LOAD_ERROR 无法加载模块babel LOAD_ERROR ./lib/api/node.js位于C:\Users\***\AppData\Roaming\npm\node_modules 我听说有可能从Nashorn运行babel.transform ? 也许有只加载一个babel的特定模块作为JavaScript文件的方法?