问题标签 [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 投票
1 回答
881 浏览

groovy - groovy shell 中的中断处理

如果您键入以下内容,则在 groovy shell 中:

并且不小心按了 Enter,您很可能会破坏当前会话,并且没有太多希望能够继续。这是一个简单的例子 - 假设你做了类似的事情:

你明白了要点——显然你可以在控制台中做一些事情,在那里你有你想要继续工作的状态。有什么方法可以告诉 groovy 停止,但不杀死 groovysh(哪个Ctrl+C)?

或者或者告诉它每次打印更少,除非要求更多?不确定有什么可能,如果有的话 - 有什么提示吗?

0 投票
2 回答
948 浏览

java - Java 与 Groovy 内部/外部类差异

爪哇:

运行时输出:

时髦的:

运行时输出:

为什么会出现这种差异?使用Outer.outer()作品,但是有什么方法可以避免输入类名?

0 投票
0 回答
781 浏览

groovy - groovysh 抛出 javax.xml.parsers.FactoryConfigurationError:找不到 javax.xml.parsers.SAXParserFactory 的提供程序

我正在尝试使用 groovysh 以交互方式开发一些代码,但是当我使用应用程序类路径启动 groovysh 时,我得到:

我的应用程序依赖项和 groovysh 依赖项之间似乎存在一些版本冲突。是否有不需要分割我的应用程序类路径的解决方法?

0 投票
1 回答
250 浏览

groovy - Groovy 基本脚本中的属性

我有一个 DSL,如果存在,before将在每个命令之前调用一个被调用的闭包。在我的设置中,我有 3 个文件:脚本本身 - Script, a ScriptBase,通过 aCompilerConfiguration和 a '附加'到脚本Handler

在脚本中,我可能有也可能没有名为before.

请注意缺少类型声明或def. 如果我正确理解 Groovy,这意味着它before是绑定中的 a,并且在使用 评估时可以从外部代码访问GroovyShell.evaluate()

在 ScriptBase 中,我执行以下操作:

以后可能会或可能不会覆盖此脚本库。然后,在 中Handler,我正在检查before脚本中是否定义了闭包:

如果脚本确实包含before闭包,则代码按预期工作,但如果不包含,则返回MissingPropertyException. 我已经看过这意味着什么,似乎 my beforeinScriptBase不被视为属性,并且ScriptBase我在互联网上找到的所有使用这些 s 的示例都提供了使用方法的示例。恐怕这对我的用例来说是不可行的。如何确保将闭包ScriptBase视为属性而不是字段(正如我现在假设的那样)。

解释一下:if如果脚本不包含before闭包并且没有在ScriptBase. 但是,我希望评估evaluatedScript.beforefalse因为它是一个空/null 闭包(即它一直到ScriptBase,并找到了空闭包)我希望尽可能避免使用 try/catch 方法。

0 投票
1 回答
673 浏览

groovy - 使用 JsonSlurper 解析 json 2 级别 - groovy

我已经解析了它并查看了它的键集的 json 响应,如下所示。它只给了我 3 个键集。为什么它只制作 3 个键集的键值对?如何检索向下两个或多个级别的字段的值?

Json 看起来像这样(在content变量中)

我解析并进行了这样的键集检查:

上面的回复log.info

我如何获取其他字段的值impid

0 投票
1 回答
479 浏览

groovy - 在 Groovyshell 中执行可变代码

考虑这段代码

whereassertionKey将在每次迭代中动态变化,并将具有如下值seatbid[0].bid[0].impid

如何在 Groovyshell 中执行以下代码,我正在尝试这个

但是我得到了 v 的值null。任何帮助表示赞赏。谢谢。

编辑:

content值为

0 投票
1 回答
515 浏览

groovy - 为什么 groovyConsole 支持 `def name = "Neo"` 而 groovysh 不支持

以下是两行代码:

如果我在 中执行它groovysh,我会得到Unknown property: name错误。如果我执行它groovyConsole,一切都会顺利进行。

0 投票
2 回答
4194 浏览

groovy - 如何将进程的标准输出、标准错误和标准输入重定向到 Groovy 中的文件,就像在 Bash shell 中一样?

我正在将 Bash shell 脚本移植到 Groovy。大多数构造都可以轻松转换(例如转换mkdir "$foo"foo.mkdir(). 但是,我对此感到困惑:

运行它时,让我们检查以下文件描述符sleep

可以通过这种方式在 Groovy 中运行进程(根据此页面):

和文件描述符sleep

可以看出,文件描述符与其他东西相关联(可能是 Groovy 进程)。因为这将用于长期运行的过程,所以我想去掉 Groovy 作为中间人。

所以,我的问题是:如何将文件重定向到文件stdin和文件stdoutstderr以便可以分离外部进程并且不需要运行 Groovy?

编辑:这个问题不是Groovy 中捕获进程输出的重复,因为该问题涉及重定向stdout和Groovy 进程本身stderrstdoutand 。stderr从@tim_yates 的回答可以看出,这是完全不同的事情。

0 投票
1 回答
254 浏览

groovy - 在 ConEmu 中打开时为 groovysh 重新映射键

Previous Title: Windows 上的 Groovy shell 设置/配置文件位置和示例

我在哪里可以在 Microsoft Windows 7 中找到/创建 groovysh/groovy shell 设置/配置文件?

Groovysh 目前有一个问题GROOVY-6453,其中某些键在我的 groovy 版本的 Windows 上无法正常工作。我以前使用 AutoHotkey 重新映射键,但我已经开始使用 ConEMU 并且到目前为止还没有弄清楚如何使用 AutoHotkey 区分选项卡。

我希望我能够重新映射配置文件中的键,这样它就可以在全局范围内为我的用户工作,并且不再需要 AutoHotkey 脚本。

只是为了澄清我正在使用的特定版本的 groovysh,ConEmu 没有任何问题。

0 投票
1 回答
430 浏览

java - 避免在不同的 Groovy 脚本之间共享 Java 元类

我的情况

我从 Java 调用多个 Groovy 脚本,它们都包含长期存在的 Groovy 对象。

我希望我的 Groovy 脚本对 Java 类(大约有 100 个实例)的 Java 元类进行一些更改。但是,脚本应该能够进行不同的更改,并且其中一个脚本的更改不应反映在其他脚本中。

问题:Java 类的元类在所有脚本中共享。

这个问题类似于How do I undo meta class changes after execution GroovyShell? 但在这种情况下,我希望两个脚本同时执行,因此脚本执行后无法重置。

示例代码

SameTest.java

相同相同的java

test.groovy

输出

期望的结果

显示有关 Java 元信息的两行应该是不同的。

这应该崩溃:

问题

是否有可能以某种方式MetaClassRegistry在不同的情况下使用不同的 's GroovyScriptEngine

或者有没有其他方法可以实现如上所示的预期结果?