Groovy环境搭建(一)


      Java语言可以说它的生态体系是非常完善的,在这个完善的生态体系里面,衍生出Groovy的动态语言。Groovy相比较Java语言而言,

它更加轻量级。Groovy是基于Apache2.0许可协议进行了开源,有着和Python一样的动态语言特性以及优雅。在该文章体系里面,详细的

介绍Groovy的环境搭建以及案例的编写。

      到https://groovy.apache.org/download.html下载Groovy的最新版本,依据使用的平台进行下载,本人是基于mac电脑,所以文章中

的案例截图都是基于mac的平台来进行的。下载最新的版本后,进行解压,然后加入到环境变量里面。在mac中,环境变量的文件名称为

.bash_profile,把Groovy加到环境变量的文件里面,内容具体为:

#groovy 

export PATH=$PATH:/Applications/devOps/tools/groovy-3.0.2/bin

见如下截图信息:

然后对文件.bash_profile进行加载,命令为:source .bash_profile。在控制台输入命令groovy --version,如果环境搭建正确,就会显示出groovy

的版本信息,如下图所示:

在控制台输入groovysh,进入到groovy的命令行里面,如下图所示:

在如上的截图信息中,可以看到,我们输出了学习编程语言最常用的一句话“世界您好!”,同时编写了一个循环的案例。可以看到,在Groovy的

动态语言里面,循环的输出是很优雅的。当然对于输出的部分,可以使用()也可以不使用,总之来说都是可以的,如下图所示:

    下面说明在Init里面创建Groovy的工程,首先打开该IDE后,安装Groovy的插件,安装插件的方式其实是非常简单的,在IDE的plugins里面,输入

groovy就会搜索到对应的插件,然后安装成功后重新启动IDE。如下图所示:

 

插件安装成功后,在Init的IDE里面点击新建工程,在新建工程的页面点击Groovy,如下图所示:

 

在如上的截图中,JDK的版本切记选择1.8.X的版本,这是因为最新的Groovy只支持1.8的版本,如果选择的是JDK11以及JDK12,编写的代码执行后,就

会出现如下的错误信息:

错误信息:
Information:Groovyc: While compiling groovyStack:java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext
    at org.codehaus.groovy.vmplugin.v8.Java8.configureClassNode(Java8.java:458)
    at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:274)
    at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:396)
    at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.scan(AbstractExtensionMethodCache.java:116)
    at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethods(AbstractExtensionMethodCache.java:97)
    at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethodsFromClassLoader(AbstractExtensionMethodCache.java:73)
    at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
    at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
    at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:115)
    at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.get(AbstractExtensionMethodCache.java:51)
    at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.findMacroMethods(MacroCallTransformingVisitor.java:119)
    at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.visitMethodCallExpression(MacroCallTransformingVisitor.java:90)
    at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:76)
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:117)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:200)
    at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:164)
    at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
    at org.codehaus.groovy.ast.MethodCallTransformation.visit(MethodCallTransformation.java:49)
    at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:336)
    at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:880)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:650)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627)
    at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:62)
    at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:108)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:90)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:157)
    at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.lambda$runGroovyc$0(InProcessGroovyc.java:76)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:835)

 

关于如上的错误信息不再详细的解释,点击next后,填写工程的名称,然后点击Finish,至此Groovy的工程创建完毕。创建后的工程如

下图所示:

 

 右键src,新建Groovy Class,如下图所示:

 

创建Index.groovy,编写如下的代码:

class Hello
{
    public static void main(String[] args)
    {
        println("Hello Groovy!")
    }
}

 

在IDE中,右键点击Run,执行后就会打印“Hello Groovy!”的信息,如下图所示:

 

当然也可以创建groovy的脚本,也是在新建中,点击Groovy Script,创建的新脚本输入如下代码,如下图所示:

 

右键执行后,输出如下的信息:

 

     谢谢您的阅读,后续会逐步的介绍。您也可关注本人的微信公众号,谢谢!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM