问题标签 [groovyshell]

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.

0 投票
2 回答
2095 浏览

groovy - GroovyShell 绑定可以在执行 setVariable 时传递对对象的引用吗?

我想知道是否有一种方法可以让 Binding 对象存储对对象的引用,而不是复制一个?

不幸的是它打印“测试”。

有没有办法在 groovy 中做到这一点?

编辑:

我给出的例子是错误的,而且太简单了。

我认为我的问题发生是因为我在一个线程中实例化对象并在另一个线程中运行脚本。

所以 Test 对象是在一个线程中创建的,然后我将它作为对 Runnable 对象的引用传递,然后调用action,validateafterTest方法。如果我注释掉对setVariable构造函数的调用并取消注释它的调用validate将正常工作。

是否有可能是并发“问题”?在 afterTestScript 我只想打印响应字符串。

0 投票
2 回答
519 浏览

scala - 如何在 Groovy 脚本引擎中访问传递类的超类变量?

我正在从 scala 动态运行 groovy 脚本。还有一些类的一些实例通过 setProperty() 传递给 groovy 脚本。例如,假设您有一个名为 TestA 的类,而类 TestB 继承了类 TestA。您正在将 B 类的实例传递给像这样的 groovy 脚本

并运行 groovy 脚本,我可以访问在 TestB 中声明的变量。但是当我尝试访问 TestA 的变量时,它是 TestB 的超类,groovy 给出了一个错误,说“类没有这样的属性”。

我仍然可以从给定的实例中调用 TestA 和 TestB 的方法。所以如果你只写setter和getter,我可以访问TestA的变量,但我不想这样做。

有没有在不使用 setter/getter 的情况下访问 TestA 的变量?喜欢使用 Expando 什么的?

0 投票
1 回答
248 浏览

grails - 动态 Groovy 上传到 Grails 应用程序

是的,我们知道用户将代码上传到生产系统的能力所带来的所有安全风险,但是为了这个问题,让我们假装这无关紧要。

在正在开发的 Grails 应用程序中,我们需要允许用户上传一些将由 Grails 应用程序使用的 Groovy 代码以及我们的客户将下载和使用的 CLI。

我知道以下有关嵌入 Groovy的文档。

有没有比动态嵌入和解释更好的选择?或者这差不多吗?

0 投票
1 回答
5128 浏览

groovy - groovy 初学者 - 如何在 groovy shell 中从内存中删除变量

我在 Groovy shell 中看不到任何从内存中删除变量的方法……这可能吗?我该怎么做呢?我可以在 Beanshell 和 Javascript(Rhino) 中看到执行此操作的方法,但在 Groovy 中看不到。

0 投票
1 回答
1448 浏览

java - GroovyShell:嵌入式执行

我正在尝试将 groovy 嵌入到大型 Java 应用程序中。

Java 应用程序应该在启动时加载一些实用的 Groovy 脚本。

然后应用程序应该多次运行其他脚本。还需要在 GUI 上输入一些代码并根据用户请求执行它。

我面临的问题是:

我正在加载这样的启动脚本:

假设我的 autoload.groovy 包含:

这工作正常。但是当我想使用以下命令运行用户命令时:

我得到错误: groovy.lang.MissingMethodException: No signature of method: Script2.prnt() is applicable for argument types: (java.lang.Integer) values: [66]

我的用户脚本如何访问已加载的方法?

注意:我也尝试过“autoload.prnt 88”,但仍然出现错误。

0 投票
2 回答
580 浏览

grails - Grails 中的运行时脚本评估 - 最佳实践

在我们的应用程序中,系统正在发送大量电子邮件。对于所有具有不同上下文变量填充动态数据的用户,这些电子邮件的格式相同。

我们现在正在计划一项功能,允许管理员编辑和自定义这些模板。因此,计划是使用 groovy shell 在运行时评估模板,例如

这似乎对我们很有效。我的问题是:

  1. GroovyShell 是首选引擎还是 Rhino 或其他更好?
  2. 是否有任何性能问题或内存问题需要注意?我们可以优化的任何低悬的果实,即外壳或绑定可以重复使用
  3. 上面代码中最大的瓶颈是什么?那个工程?评价?

谢谢

0 投票
2 回答
281 浏览

groovy - 在 groovsh 中覆盖 groovy 附带的库?

Groovy 提供了各种第三方库。servlet-api (v2.4) 是 groovy (v 2.0.1) 的示例:

假设我想要一个更新的版本:建议的方法是什么?

0 投票
1 回答
575 浏览

groovy - GroovyShell 一个编译后的字符串调用另一个

如果我像这样运行 GroovyScript:

它工作得很好。问题是我希望“Square”函数也被编译。我试过这个:

但它不起作用,我很确定这是因为 gs.parse 返回的“脚本”对象不像闭包——但我不想更改第二个字符串的语法——如果我做了会有很多解决方案......

有任何想法吗?

编辑:写完这篇文章后,我意识到可以简单地将两个字符串连接起来并解析一次,所以每次我想运行一个使用 square() 函数的脚本时,我都必须在前面加上文本“def square (x){x*x)\n" 到脚本...

我可以做到这一点,但它似乎有点古怪,所以我仍然对其他答案持开放态度。

0 投票
1 回答
438 浏览

compiler-errors - How to make Groovy Shell read # symbol

I am having trouble getting the following code to compile in groovy.

}

This is what should be executed when I call my function like this:

What I get is this exception:

I googled this exception for a while now, but cannot come up with how to resolve this issue. Perhaps someone has experienced a similar situation already and can help me out with this.

Thanks.

0 投票
1 回答
5815 浏览

java - 在运行时将 Groovy 脚本导入另一个 Groovy 脚本

我有一个看起来像这样的 Groovy 文件(当前)。

main.groovy

我有另一个名为的 groovy 文件

CommonFunctions.groovy

我正在尝试将CommonFunctions脚本包含到脚本中,但是在构建时脚本的位置是未知的(即我不能硬编码脚本中的绝对文件路径或 java 进程的绝对路径与位置有关脚本将被存储)。

我所知道的是脚本将在一起或位于相对于调用脚本的位置(例如子目录)。

我试图定位调用脚本的位置,但我得到了错误

考虑到在运行时使用GroovyClassLoader.parseClass(File)方法访问主脚本,我如何引用此脚本。