问题标签 [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 回答
3946 浏览

java - 如何评估脚本中的 Groovy 字符串?

我实际上是在尝试使用 Groovy 创建一个 CLI。我在 Java 中设置了一个完整的 JavaFX GUI,我希望能够输入 groovy 脚本以在 groovy 脚本中运行不同的功能。

例如,假设我有这个脚本:

我希望能够输入“meow();” 并按回车键并使用脚本作为参考对其进行评估。

我试过使用

但无济于事;它只是出现了错误:

我可以调用其他标准函数,例如:

但我就是无法运行自己的方法......如何解决?

0 投票
2 回答
973 浏览

groovy - 将字符串中的属性添加到 Groovy 类

是否可以从字符串动态地将属性添加到 Groovy 类?
例如,我要求用户插入字符串,比如“HelloString”
,然后将属性 HelloString 添加到现有的 Groovy 玻璃中?

0 投票
1 回答
5057 浏览

groovy - 如何将多个jar添加到groovyConole/groovysh的类路径中?

我不得不问这个感觉很荒谬,但我似乎无法将多个 jar 文件添加到 groovyConsole 和 groovysh 的类路径中。如何将多个 jar 文件添加到类路径?这是我尝试过的:

groovyConsole -cp ~/lib/compile/jar/mysql-connector-java-5.1.32.jar:~/lib/compile/jar/ojdbc6-11.2.0.3.jar

但是,当我在控制台中执行此代码时,我得到以下信息:

请注意,第一个 jar 文件 mysql jar 文件已添加到类加载器中,但没有添加第二个 jar 文件 oracle jar 文件。我也尝试过两次使用 -cp 参数,例如:

但这只是失败并出现错误。除了模糊地暗示它就像 Java 一样工作之外,这些文档显然没有任何指导。因此,为什么它如此令人沮丧的第一次尝试没有开箱即用。

我还尝试在使用 Script > Add Jar(s) to Class path 菜单选项启动 groovyConsole 后添加 Jar 文件,但它没有添加任何 jar 文件。

那么为什么这不能以更直接的方式工作呢?

0 投票
2 回答
1615 浏览

performance - Groovy shell 启动速度非常慢

我正在运行交互式Groovy Shell,它实际上需要几分钟才能在我的机器上启动(一台配备 Intel i5 处理器和 4 GB RAM 的 Windows 7 笔记本电脑,所以不是一台古老的计算机,只是路中间的一台)

groovy使用or运行简单脚本groovyclientgroovyserver花费可接受的时间(最多几秒钟),但在运行groovysh光标后开始闪烁......足够长的时间让我泡茶,写下这个问题并在 Twitter 上咆哮(仍然没有提示写任何代码)

尝试使用以下配置

  • Groovy 版本:2.3.4 JVM:1.7.0_03 供应商:Oracle Corporation 操作系统:Windows 7
  • Groovy 版本:2.3.4 JVM:1.8.0_20 供应商:Oracle Corporation 操作系统:Windows 7

它完全一样。

我真的很希望能够以 REPL 风格使用它。有没有人遇到并解决过类似的问题?你能推荐一个不同的工具来完成这项工作吗?

正如评论中所建议的那样,我跑去groovysh -d -v启用调试和详细输出,希望看到需要这么长时间的东西。

的输出groovysh -d -v

很长一段时间,没有进一步的输出,然后在几秒钟内全部休息:

0 投票
2 回答
1062 浏览

groovy - Groovy 2.3 中如何使用@SourceURI 注解检索脚本文件的完整路径?

我需要在运行时检索 Groovy 2.3 中脚本文件的完整路径。实际上,我遇到的问题与此处描述的问题相同:在运行时获取 groovy 源文件的路径

我的脚本是否可以从 GroovyShell 执行。

我的脚本位于:

=> 我只想在运行时检索此路径。

如果我使用被接受的解决方案:

我得到的实际上是:

这是 groovy 主文件夹。这是不正确的。另一个建议的答案即:

仅当我的脚本位于类路径中,或者在 groovy 启动时使用 groovy-starter.conf 中的加载指令加载它时才有效。否则返回null。我可以使用这种方法,但它并不令人满意,因为它就像传递参数一样,这里的目标是用户能够从任何地方执行脚本而无需修改或配置。

我也红了这个专注于这个问题的JIRA: JIRA-1642

解决方案似乎使用了为此目的创建的@SourceURI 注释。问题是我无法让它工作。我尝试执行如下所示的代码用法:SourceURI

我得到的是(groovy 2.3.7)不是路径而是源代码:

如何使用@SourceURI 注释来检索脚本文件的路径?

0 投票
2 回答
418 浏览

grails - 如何将类传递给 Groovy 的 Eval 绑定?

我正在做一些粗俗的事情,比如使用 Groovy 的 metaClass 和 Eval 从 XML 导入动态地将属性分配给对象:

不过,我想做的是能够在其内部实例化该类的另一个副本:

但我不能,因为我认为这个类没有传递给绑定。还有其他解决方案吗?

0 投票
1 回答
241 浏览

groovy - groovysh上的关闭错误

运行groovyshv2.3.6:

这个错误是 on 的已知错误closuregroovysh

0 投票
1 回答
616 浏览

java - 将 IntegerMetaClass 动态添加到 GroovyShell

IntegerMetaClass只想在给定的GroovyShell上下文中使用自定义。

原因是不要用我潜在的“令人不安”来污染整个运行时IntegerMetaClass

当我将 IntegerMetaClass.java 实现放入魔术包时,它就像一个魅力groovy.runtime.metaclass.java.lang。但是,当我尝试手动将其添加到中间 GroovyClassLoader 时,它停止工作。

GroovyClassLoader除了“解析” MetaClass 之外,我是否还有其他事情要做?其他地方?

更新1:

如上所述,IntegerMetaClass.minutes当我将它直接放在我的 java 源类路径中时,查找正在工作。

更新2:

一个可能但不令人满意的解决方案:

gcl.parseClass在通话后添加以下内容

但是这个解决方案必须在 MetaClass 源和原始目标类之间保持一种“映射”,以支持超过Integer......

0 投票
3 回答
736 浏览

groovy - Groovysh 初始化脚本

我正在寻找一种方法来初始化 groovysh,然后进入常规的 groovysh 交互会话。那是:

  • 运行一些脚本(例如导入或其他)
  • 继续在 groovysh 中运行,就好像之前的脚本是从会话开始时手动输入的一样。

看到这个:

但我希望能够在每个应用程序而不是每个用户级别上执行此操作。即不同的应用程序通常不会导入相同的东西(或以相同的方式初始化)。那可能吗?

0 投票
1 回答
311 浏览

groovy - 从 groovysh 中导入的类中引用东西

假设我有一个SomeThings.groovy文件:

我在类路径上使用上述文件启动 groovysh 并执行以下操作:

都好。然而:

我如何引用someVarsomeFunc来自 groovysh?