草庐IT

groovy-spread

全部标签

java - 如何在不使用 -cp 开关的情况下在 Groovy 中自动加载数据库 jar?

我想简化调用Oracle数据库的Groovy脚本的执行。如何将ojdbcjar添加到默认类路径以便我可以运行:groovyRunScript.groovy代替:groovy-cpojdbc5.jarRunScript.groovy 最佳答案 摘自GroovyRecipes,作者ScottDavis,AutomaticallyIncludingJARsinthe./groovy/libDirectory:在您的登录目录中创建.groovy/lib取消注释${GROOVY_HOME}/conf/groovy-starter.conf中的

java - groovy 中的闭包与 java 8 中的闭包(lambda 表达式)?

给定doSomething(Functionfoo){printlnfoo(2)}Groovy:doSomething({it*it}作为函数)Java:doSomething((x)->x*x)这两者有什么区别吗? 最佳答案 在Groovy中,闭包是groovy.lang.Closure类型的一等公民,而Java8中的lambda是它们所代表的默认方法接口(interface)的实际实例。这意味着您需要在Groovy中使用as关键字(如您所示),但或者,在Java中您需要指定一个接口(interface),因此在Groovy中,您

java - Groovy 异常后重试

在Ruby中,我可以写:begindo_something#exceptionraisedrescue#handleserrorretry#restartfrombeginningendGroovy/Java中有类似的东西吗?我找到了this但也许有更好的东西? 最佳答案 您可以在Groovy中构建自己的辅助方法来封装此重试逻辑。defretry(inttimes=5,ClosureerrorHandler={e->log.warn(e.message,e)},Closurebody){intretries=0defexceptio

java - Java 风格的 Groovy 和 Java 一样快吗?

如果我理解正确的话,Groovy是动态类型的,但因为它几乎是Java的超集,所以可以选择提供静态类型信息。如果编写只有少数部分对性能至关重要的内容,同时避免使用多种语言的摩擦,这可能会很有用。只能为性能关键部分提供类型注释。在使用类Java子集并提供静态类型注释的函数/类中使用Groovy而不是Java的性能损失是什么? 最佳答案 在groovy中声明类型并不能神奇地加快速度。它仍然是groovy代码,需要通过MOP以防某些内容发生动态更改。您不会仅仅因为提供了类型信息就获得了静态链接。对于groovy代码速度不够快的性能敏感的事情

java - 如何重定向 Groovy 脚本的输出?

我想知道是否有任何方法可以更改我从Java代码执行的groovy脚本的默认输出(System.out)。Java代码如下:publicvoidexec(Filefile,OutputStreamoutput)throwsException{GroovyShellshell=newGroovyShell();shell.evaluate(file);}以及示例groovy脚本:defname='World'println"Hello$name!"当前方法的执行,评估编写“HelloWorld!”的脚本到控制台(System.out)。如何将输出重定向到作为参数传递的OutputStrea

java - Groovy:从文件中读取一系列行

我有一个文本文件,其中包含大约2,000,000行的大量数据。使用以下代码片段浏览文件很容易,但这不是我需要的;-)deff=newFile("input.txt")f.eachLine(){//Somecodehere}我只需要从文件中读取特定范围的行。有没有办法像这样指定开始和结束行(伪代码)?我想避免在选择范围之前使用readLines()将所有行加载到内存中。//Readalllinesfrom4to48deff=newFile("input.txt")defstart=4defend=48f.eachLine(start,end){//Somecodehere}如果Groov

java - Groovy 和 grails jdk 问题

我希望我能给你们更多关于正在发生的事情的信息,但我真的不知道。我正在尝试从springsource安装groovy和grails工具套件,但我无法将其配置为正常工作。我有最新的JDK,首选项显示了它,但我仍然收到警告并且它没有构建。我在下面张贴了一些图片以显示正在发生的事情。 最佳答案 在您的GGTS上转到窗口选择java选择已安装的JRE添加->标准虚拟机jREhome选择目录到C:\ProgramFiles\Java\jdk1.6.0_18从已安装的JRE中选择jdk1.6.0_18

java - Groovy 和 Grails vs Scala,为什么 Twitter 选择 Scala?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我有一个非常基本的问题:为什么Twitter选择Scala而不是Groovy来从Ruby切换?我认为对于Rubyist或Javaman来说,使用Groovy比使用Scala更容易。谢谢。

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

我的情况我从Java调用多个Groovy脚本,它们都包含长期存在的Groovy对象。我希望我的Groovy脚本对Java类(大约有100个实例)的Java元类进行一些更改。但是,脚本应该能够进行不同的更改,其中一个脚本的更改不应反射(reflect)在其他脚本中。问题:Java类的元类在所有脚本之间共享。这个问题类似于HowdoIundometaclasschangesafterexecutingGroovyShell?但在这种情况下,我希望两个脚本同时执行,因此无法在脚本执行后重新设置。示例代码SameTest.javapublicinterfaceSameTest{voidprin

java - 如何确定在脚本引擎中运行的 Groovy 代码中是否存在变量?

如何确定在脚本引擎中运行的Groovy代码中是否存在变量?变量由ScriptEngine'sputmethod放置 最佳答案 在groovy.lang.Script中有一个方法publicBindinggetBinding()。和groovy.lang.Binding有方法publicbooleanhasVariable(Stringname)。因此您可以简单地检查变量是否存在,例如:if(binding.hasVariable('superVariable')){//yourcodehere}