问题标签 [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.
groovy - groovy shell 中的中断处理
如果您键入以下内容,则在 groovy shell 中:
并且不小心按了 Enter,您很可能会破坏当前会话,并且没有太多希望能够继续。这是一个简单的例子 - 假设你做了类似的事情:
你明白了要点——显然你可以在控制台中做一些事情,在那里你有你想要继续工作的状态。有什么方法可以告诉 groovy 停止,但不杀死 groovysh(哪个Ctrl+C)?
或者或者告诉它每次打印更少,除非要求更多?不确定有什么可能,如果有的话 - 有什么提示吗?
java - Java 与 Groovy 内部/外部类差异
爪哇:
运行时输出:
时髦的:
运行时输出:
为什么会出现这种差异?使用Outer.outer()
作品,但是有什么方法可以避免输入类名?
groovy - groovysh 抛出 javax.xml.parsers.FactoryConfigurationError:找不到 javax.xml.parsers.SAXParserFactory 的提供程序
我正在尝试使用 groovysh 以交互方式开发一些代码,但是当我使用应用程序类路径启动 groovysh 时,我得到:
我的应用程序依赖项和 groovysh 依赖项之间似乎存在一些版本冲突。是否有不需要分割我的应用程序类路径的解决方法?
groovy - Groovy 基本脚本中的属性
我有一个 DSL,如果存在,before
将在每个命令之前调用一个被调用的闭包。在我的设置中,我有 3 个文件:脚本本身 - Script
, a ScriptBase
,通过 aCompilerConfiguration
和 a '附加'到脚本Handler
。
在脚本中,我可能有也可能没有名为before
.
请注意缺少类型声明或def
. 如果我正确理解 Groovy,这意味着它before
是绑定中的 a,并且在使用 评估时可以从外部代码访问GroovyShell.evaluate()
。
在 ScriptBase 中,我执行以下操作:
以后可能会或可能不会覆盖此脚本库。然后,在 中Handler
,我正在检查before
脚本中是否定义了闭包:
如果脚本确实包含before
闭包,则代码按预期工作,但如果不包含,则返回MissingPropertyException
. 我已经看过这意味着什么,似乎 my before
inScriptBase
不被视为属性,并且ScriptBase
我在互联网上找到的所有使用这些 s 的示例都提供了使用方法的示例。恐怕这对我的用例来说是不可行的。如何确保将闭包ScriptBase
视为属性而不是字段(正如我现在假设的那样)。
解释一下:if
如果脚本不包含before
闭包并且没有在ScriptBase
. 但是,我希望评估evaluatedScript.before
是false
因为它是一个空/null 闭包(即它一直到ScriptBase
,并找到了空闭包)我希望尽可能避免使用 try/catch 方法。
groovy - 使用 JsonSlurper 解析 json 2 级别 - groovy
我已经解析了它并查看了它的键集的 json 响应,如下所示。它只给了我 3 个键集。为什么它只制作 3 个键集的键值对?如何检索向下两个或多个级别的字段的值?
Json 看起来像这样(在content
变量中)
我解析并进行了这样的键集检查:
上面的回复log.info
是
我如何获取其他字段的值impid
?
groovy - 在 Groovyshell 中执行可变代码
考虑这段代码
whereassertionKey
将在每次迭代中动态变化,并将具有如下值seatbid[0].bid[0].impid
如何在 Groovyshell 中执行以下代码,我正在尝试这个
但是我得到了 v 的值null
。任何帮助表示赞赏。谢谢。
编辑:
的content
值为
groovy - 为什么 groovyConsole 支持 `def name = "Neo"` 而 groovysh 不支持
以下是两行代码:
如果我在 中执行它groovysh
,我会得到Unknown property: name
错误。如果我执行它groovyConsole
,一切都会顺利进行。
groovy - 如何将进程的标准输出、标准错误和标准输入重定向到 Groovy 中的文件,就像在 Bash shell 中一样?
我正在将 Bash shell 脚本移植到 Groovy。大多数构造都可以轻松转换(例如转换mkdir "$foo"
为foo.mkdir()
. 但是,我对此感到困惑:
运行它时,让我们检查以下文件描述符sleep
:
可以通过这种方式在 Groovy 中运行进程(根据此页面):
和文件描述符sleep
:
可以看出,文件描述符与其他东西相关联(可能是 Groovy 进程)。因为这将用于长期运行的过程,所以我想去掉 Groovy 作为中间人。
所以,我的问题是:如何将文件重定向到文件stdin
和文件stdout
,stderr
以便可以分离外部进程并且不需要运行 Groovy?
编辑:这个问题不是Groovy 中捕获进程输出的重复,因为该问题涉及重定向stdout
和Groovy 进程本身stderr
的stdout
and 。stderr
从@tim_yates 的回答可以看出,这是完全不同的事情。
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 没有任何问题。
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
?
或者有没有其他方法可以实现如上所示的预期结果?