问题标签 [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 - 使用 rvm jruby install 在 Java 代码中嵌入 JRuby
我正在尝试从 Java 应用程序中嵌入和评估 ruby 代码。我需要能够使用随 rvm 安装的 jruby 环境,而不是将 jruby-complete.jar 放在我的类路径中。我可以执行基本的内核代码,但我遇到了需要标准库(fileutils、tmpdir 等)的问题。
我在下面创建了使用通过 RVM 安装的 JRuby 的测试文件,如果您有本地 rvm + jruby 安装(将 JRUBY_VERSION 更改为安装的版本),任何人都应该能够编译+运行它。我意识到我引用的 jruby.jar 与 jruby-complete.jar 不同,但我希望有一种方法可以在不下载外部 jar 的情况下加载标准库。
osgi - Equinox 和 Java 脚本 API
我想创建一个包含脚本引擎(符合 JSR-223 )的 OSGi(Equinox)包,并通过ScriptEngineManager.getEngineFactories()
.
然而,Java Scripting API 的服务发现机制(jar 文件服务发现)无法发现已安装包中的脚本引擎。
我已经看到关于该主题的一些答案,建议使用 Apache Felix 或 Apache Sling,因为他们有解决方案。但是我想知道Equinox实现是否有办法解决这个问题?
ant - 从 ant 执行:“未找到提供程序 com.sun.script.javascript.RhinoScriptEngineFactory”
我正在开发一个使用 JSR 223 的应用程序。
一切正常(单元测试和从命令行执行),除非从 Ant 执行。在这种情况下,通过此错误执行:
JDK7 包括一个 Rhino 的实现,我确信这个类在 rt.jar 中。为什么使用 Ant 执行时没有找到?
JDK 版本:java 版本 "1.7.0_11" Java(TM) SE Runtime Environment (build 1.7.0_11-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, 混合模式)
ANT 版本:2012 年 5 月 22 日编译的 Apache Ant(TM) 版本 1.8.4
谢谢
测试:
java - JRS-223 是否涵盖运行时环境?
JSR-223 是否涵盖了从 abcl 到 rhino 到 jython 的各种兼容语言中常见的交互式解释器的规范?
如果不是,那么所有这些语言是按照他们想要的方式在 Java 中创建它们的环境,还是它们大多是用自己的语言(作为库)编写的?
例如:python 交互式解释器是用 python 编写的,还是用 C/Java/C# 编写的,取决于它在哪里运行?
编辑:
我并不是说每种脚本语言都需要一个 REPL,而是说迄今为止我见过的每种基于 JVM 的脚本语言都有一个。如果还没有为标准 REPL 环境建立规范,那么也许是时候这样做了。
multithreading - Jmeter+Jruby-JSR223示例Request+jmeter属性未分配给超过4个线程
我已经设置了 ant JMeter 任务,它为 JMeter 请求提供了已经为 JMeter 测试计划 (JMX) 分配了 3 个属性的请求,
我在 Jruby 脚本(JSR223 采样器)中读取这些属性,如下所示(对于前 4 个线程,它正确获取所有 3 个属性值并分配给局部变量(pvalue1mpvalue2)..
但问题是从线程 5 开始,它开始抛出异常
我的jruby中有这样的java_import ...
java - Java - “安全”脚本
有谁知道 Java 平台的任何脚本可以强制限制为提供的函数集(最好绝对没有函数,除非提供)?我已经尝试了几种与 JSR223 兼容的语言,但在所有情况下都能够危及安全性。
我的系统目前在做什么:
- 从文件系统加载请求的脚本。
- 创建一个上下文来运行脚本
- 在新上下文中运行脚本
即使正确配置了安全管理器,什么会阻止恶意脚本内容访问(或更糟——变异)对象中的字段,否则它不应该访问这些字段?如果出现错误或故意为恶意行为定制脚本,这可能会造成一些损害。
javascript - 来自其他包的包中的 Javascript 和类
我试着描述我的问题。以下配置:
- 在 Servicemix 上,我有两个捆绑包:一个带有模型,第二个带有服务。模型包导出模型包,服务包从模型包中导入模型包。
- 在服务包中,我有具有一种服务方法的 Web 服务 (CXF):执行。此方法使用两个参数:第一个(String)是 javascript 文件的名称,第二个是参数的映射(HashMap)。该服务使用 javax.scipt.CompiledScript.eval(Bindings bindings) 执行 javascript 脚本。这个想法是在脚本语言中拥有业务逻辑。
- javascript 脚本可以通过以下方式访问 Java 对象:
a/ 绑定 - 没有问题。我在脚本中看到我使用 bindings.put(name, object) 添加的所有对象的实例
b/ importPackage(Packages.my.java.package.from.model.bundle) - 现在我遇到了问题:当我尝试使用关键字“new”从模型包中创建 javascript Java 对象时,我收到以下错误:
com.google.code.scriptengines.js.util.ExtendedScriptException 类:org.mozilla.javascript.EcmaError:ReferenceError:“产品”未定义。(#4) 在文件中的 [4]
其中 Product 是模型包中的我的 Java 类,在第 4 行中,我尝试使用以下命令创建此对象:
而且,我认为,非常重要的信息:Servicemix 4.2.0 中的一切都很好。现在我必须升级到 4.3.1 并且不起作用(两个版本都来自 Fusesource)
有什么帮助吗?
问候, 雅克
jsr223 - Fantom 是否支持 JSR-223?
Fantom 编程语言是否直接或通过第三方实现支持 JSR-223?也就是说,可以使用 Fantom 通过“javax.script”API 编写 Java 对象的脚本吗?
eclipse - 在 Eclipse 中调试已编译的 Groovy 脚本
我正在尝试从 JUnit 测试中调试 Eclipse 中的 Groovy 脚本。Groovy 代码是在 Tomcat 中运行的大型 Java 应用程序的一部分。由于各种原因,我们的系统设置为使用已编译的 JSR223 表达式。这是缩写的代码片段:
测试运行良好,但即使我在 Foo.groovy 中设置了断点,并且文件位于类路径中,调试时断点也不会被命中。我猜这不起作用,因为字符串格式的表达式与包含它的实际文件之间没有关联。那么有没有办法在字符串与其对应的文件名之间创建这种关联?如前所述,我需要使用 CompiledScript。作为旁注,当使用这种方法时,我已经能够使用相同的 Groovy 脚本在调试器中命中断点:
当然,在这种情况下,Groovy 引擎直接加载文件。非常感谢有关如何使第一个示例工作的任何提示。谢谢。
java - Java Scripting (jsr223):是否可以(重新)添加 rhino 编译功能
甲骨文在 jdk6 中包含了一只被剥皮的犀牛
剥离的功能之一是 rhino js 到字节码编译器
是否可以在应用程序级别包含它?
我想在不改变 jsr223 调用的情况下提高性能