问题标签 [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.
java - 如何评估脚本中的 Groovy 字符串?
我实际上是在尝试使用 Groovy 创建一个 CLI。我在 Java 中设置了一个完整的 JavaFX GUI,我希望能够输入 groovy 脚本以在 groovy 脚本中运行不同的功能。
例如,假设我有这个脚本:
我希望能够输入“meow();” 并按回车键并使用脚本作为参考对其进行评估。
我试过使用
但无济于事;它只是出现了错误:
我可以调用其他标准函数,例如:
但我就是无法运行自己的方法......如何解决?
groovy - 将字符串中的属性添加到 Groovy 类
是否可以从字符串动态地将属性添加到 Groovy 类?
例如,我要求用户插入字符串,比如“HelloString”
,然后将属性 HelloString 添加到现有的 Groovy 玻璃中?
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 文件。
那么为什么这不能以更直接的方式工作呢?
performance - Groovy shell 启动速度非常慢
我正在运行交互式Groovy Shell,它实际上需要几分钟才能在我的机器上启动(一台配备 Intel i5 处理器和 4 GB RAM 的 Windows 7 笔记本电脑,所以不是一台古老的计算机,只是路中间的一台)
groovy
使用or运行简单脚本groovyclient
并groovyserver
花费可接受的时间(最多几秒钟),但在运行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
很长一段时间,没有进一步的输出,然后在几秒钟内全部休息:
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 注释来检索脚本文件的路径?
grails - 如何将类传递给 Groovy 的 Eval 绑定?
我正在做一些粗俗的事情,比如使用 Groovy 的 metaClass 和 Eval 从 XML 导入动态地将属性分配给对象:
不过,我想做的是能够在其内部实例化该类的另一个副本:
但我不能,因为我认为这个类没有传递给绑定。还有其他解决方案吗?
groovy - groovysh上的关闭错误
运行groovysh
v2.3.6:
这个错误是 on 的已知错误closure
吗groovysh
?
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
......
groovy - Groovysh 初始化脚本
我正在寻找一种方法来初始化 groovysh,然后进入常规的 groovysh 交互会话。那是:
- 运行一些脚本(例如导入或其他)
- 继续在 groovysh 中运行,就好像之前的脚本是从会话开始时手动输入的一样。
看到这个:
但我希望能够在每个应用程序而不是每个用户级别上执行此操作。即不同的应用程序通常不会导入相同的东西(或以相同的方式初始化)。那可能吗?
groovy - 从 groovysh 中导入的类中引用东西
假设我有一个SomeThings.groovy
文件:
我在类路径上使用上述文件启动 groovysh 并执行以下操作:
都好。然而:
我如何引用someVar
和someFunc
来自 groovysh?