问题标签 [jsr223]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何使用 JSR-223 访问导致 ScriptException 的 Java 异常
我正在使用 JRE6 中内置的 JSR-223 脚本引擎执行 Javascript。Javascripts 能够访问 Java 代码和对象。当从 JavaScript 执行的 Java 代码抛出异常时,ScriptEngine 将抛出 ScriptException。
我希望能够访问导致 Javascript 抛出异常的 Java 异常。
从 Javascript 中,我可以捕获异常并查看异常的 javaException 字段:
但是,我无法控制 Javascript,只能从 ScriptEngine 执行它们。有没有办法从 ScriptException 中获取“内部”Java 异常?
我相信如果我使用的是 Rhino,RhinoException 会有一个 Java 异常可用。RhinoException 在 JSR-223 API 中不可用。
groovy - 为什么使用 GroovyScriptEngineImpl 的引擎实例?
在 groovy 中使用 java6 功能获取 ScriptEngine 时,对于 groovy 它给了我实例“GroovyScriptEngineImpl”,它是一种类型而不是接口,还有其他方法来获取接口吗?
是否有任何可用的接口代替使用“GroovyScriptEngineImpl”
java - 带有 JSR-223 的 Jython 导入语句
我们如何在 JSR-223 中使用外部 Jython 模块?(假设使用 pip 或 easy_install 安装了一些 foo python 模块,并且以下 Python 代码使用 Jython 运行)
Python代码:(jsr223_test.py)
Java代码:
这会导致 ImportError: no module named pyfoo。但是在终端中执行以下操作成功。
有什么建议吗?
编辑: 我猜这是一个类路径问题,并将 py 文件从鸡蛋复制到我的应用程序工作目录。在http://wiki.python.org/jython/UserGuide#using-jsr-223之后,我还添加了引擎环境的路径(如代码所示,在 //BEGIN EDIT 和 //END EDIT 之间)它奏效了。我也尝试将 $JYTHON_HOME/Lib/site-packages 添加到路径中,但它不起作用,我不知道为什么。
javascript - 使用 Rhino 和 JSR-223 读取 JSON 文件
我正在尝试使用一些 JavaScript 读取 JSON 文件,我正在通过 Java JSR-223 API 使用 Rhino 进行评估。我正在尝试使用 Rhino shell,但不适用于我的 Java 代码中的嵌入式 Javascript。
这是有效的:
这是不起作用的:
我收到此错误:
我怎样才能让readFile
我的引擎中可用?
ruby - 在 Mule Studio 中使用 jruby-openssl
我需要在 Mule Studio 的 Ruby 中使用 openssl。Mule Studio 预装了 JRuby。我相信您知道,JRuby 不包含 openssl。我下载了 jruby-openssl gem 并将这些文件包含在我的 Mule 项目中。我可以要求这些文件,除了 jopenssl.jar。实际上我可以要求它,但它似乎没有做任何事情。我看到以下错误:
这当然是指OpenSSL::OPENSSL_VERSION_NUMBER
.
只是为了好玩,我手动定义了它,但随后它不断发现越来越多的未初始化常量。我读过一些文章说使用 jruby-openssl 的唯一方法是解压缩并组合 jruby-complete.jar 和 jopenssl.jar。由于 Mule 使用的是自己的 JRuby 副本,所以这是不可行的,更不用说荒谬的组合了。
那么请问,有人知道如何在 Mule Studio 中使用 jruby-openssl 吗?(仅供参考,我对 Mule 和 JRuby 都是新手,但我很快就学会了不喜欢两者。)
附录
一点背景知识:我们需要使用 Mule 通过 FTPS 传输文件。由于不直接支持它,而且我们有一个现有的 Ruby 实现,我们决定将 Ruby 代码简单地移动到 Mule 中。但它需要openssl,这就是这个问题的开始。上面的require 'openssl'
行是触发错误的原因。
以下是相关的 Mule/Ruby 代码:
根据您的建议,我重建了 Mule 环境库,替换为包含 jopenssl.jar 的新 JRuby 版本。但是,我现在在运行我的应用程序时收到以下错误。据我所知,除了jruby-complete.jar,其他都没有改变。
更新
可悲的是,经过几天的努力,我的公司认为通过 Mule 支持 FTPS 是不值得的。
java - 在哪里可以找到 JSR 223 TCK
我正在寻找一个地方来查找(下载链接左右)JSR 223 规范的 TCK。这是针对在 Apache 2 许可下发布的项目。(实际上我想要源代码+TCK的二进制文件让我很好地理解规范,即使是源代码也足够最坏的情况)
谢谢
java - JRuby 类和 Java 脚本引擎的意外结果
我正在试验 Java 脚本引擎和 Ruby,但在 ruby 脚本中设置一些实例变量时遇到了麻烦。这可能是我对 Ruby 缺乏了解,或者我对如何在脚本引擎中使用 ruby 类缺乏了解。使用以下代码:
我希望输出是'A,B是一个测试'
相反,输出是“,是一个测试”。
我应该如何在这段代码中设置变量 a、b?
编辑:为了清楚起见,理想情况下,我不想通过将变量附加到这个 StringBuilder 来设置它们——这只是为了说明。在实践中,我将从某个源加载脚本,然后想在该 Ruby 对象上设置属性和调用方法。我确定我只是错过了其他人都知道的一些关键步骤:)。感谢 Gareth Davis 的回答,我发现我可以成功使用绑定和全局变量,但这不适用于所有脚本。非常感谢任何超越“hello world”类型用法的好文章的链接,因为我没有找到任何像样的文章。
第二次编辑:这是工作的最终代码,我知道必须缺少关键行:)-
binding - JRuby JSR223 接口忽略 binidngs
JRuby (1.6.7.2) 框架的 JSR 223 javax.script 接口似乎忽略了 ScriptContext 的绑定中的绑定 Java 值。我犯错了吗?这是一个不起作用的简单示例:
或者这是一个已知问题?
java - Tomcat 中 JSR223 脚本的类路径问题
我试图了解在 Tomcat 中运行时遇到的 JSR223 脚本问题。我正在使用 Java 脚本引擎,但我相信这个问题更普遍(我也看到了与参考 JS 引擎类似的问题)。我传递给评估的脚本的第一行是:
这失败并显示以下消息:
因此,深入研究 Java 脚本引擎的源代码,我知道为什么会发生这种情况 - 它将我的脚本文本传递给 JavaCompiler,指定它从中检索到的类路径java.class.path
,但是因为 Tomcat 在类加载器和类路径方面做了自己的事情关心的是,唯一包含的是$CATALINA_HOME/bin/bootstrap.jar
.
可以覆盖脚本引擎将使用的类路径,但这只会给我带来下一个问题 - 我如何在运行时发现 Tomcat 正在使用什么 claspath?
似乎我必须在这里遗漏一些明显的东西,因为据我所知,这将发生在任何试图在 Web 应用程序中执行任何类型的严肃脚本的人身上,但我已经搜索了几个小时来进行讨论在这方面,甚至找不到任何人问这个问题......
java - 如何调试从 Java 调用的 JavaScript 代码(通过 JSR-223)?
我正在开发一个 java 应用程序,其中一些逻辑是通过jsr223 (javascript) 执行的。在 java 类中,我将一些 java 对象转发到 javascript(例如,我的域对象、一些 SQL 查询的 PreparedStatement),然后开始编译 javascript 代码。
我使用 Eclipse 进行开发。
我的问题是,如何调试 javascript 部分?
干杯,雅克