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