Print
카테고리: [ Development ]
조회수: 4325

오늘은 그루비에 대해서 아주 빨리 알아보려고 합니다.

 

1. 파일 다운로드

https://dl.bintray.com/groovy/maven/apache-groovy-binary-2.4.12.zip 

파일은 최신 버전을 확인해서 받으시면 되구요.

 

2. 압축해제

$ unzip apache-groovy-binary-2.4.12.zip
Archive:  apache-groovy-binary-2.4.12.zip
   creating: groovy-2.4.12/
  inflating: groovy-2.4.12/LICENSE
  inflating: groovy-2.4.12/NOTICE
   creating: groovy-2.4.12/lib/
  inflating: groovy-2.4.12/lib/groovy-2.4.12.jar
  inflating: groovy-2.4.12/lib/commons-cli-1.2.jar
  inflating: groovy-2.4.12/lib/ant-1.9.4.jar
  inflating: groovy-2.4.12/lib/xstream-1.4.7.jar
  inflating: groovy-2.4.12/lib/jansi-1.11.jar
  inflating: groovy-2.4.12/lib/ivy-2.4.0.jar
  inflating: groovy-2.4.12/lib/gpars-1.2.1.jar
  inflating: groovy-2.4.12/lib/ant-launcher-1.9.4.jar
  inflating: groovy-2.4.12/lib/xmlpull-1.1.3.1.jar
  inflating: groovy-2.4.12/lib/multiverse-core-0.7.0.jar
  inflating: groovy-2.4.12/lib/jsr166y-1.7.0.jar
  inflating: groovy-2.4.12/lib/groovy-ant-2.4.12.jar
계속 압축 풀림....

  

3. groovy 실행

$ cd groovy-2.4.12/bin
$ ./groovy

which: no javac in (......)
groovy: JAVA_HOME not set and cannot find javac to deduce location, please set JAVA_HOME.

JAVA_HOME이 안잡혀서 에러가 났네요?

$ export JAVA_HOME=/java/jdk1.7.0_80
$ ./groovy
error: neither -e or filename provided
usage: groovy [options] [args]
options:
  -a,--autosplit <splitPattern>    split lines using splitPattern (default '\s')
                                   using implicit 'split' variable
  -b,--basescript <class>          Base class name for scripts (must derive from
                                   Script)
  -c,--encoding <charset>          specify the encoding of the files
  -classpath <path>                Specify where to find the class files - must
                                   be first argument
     --configscript <arg>          A script for tweaking the configuration
                                   options
  -cp,--classpath <path>           Aliases for '-classpath'
  -D,--define <name=value>         define a system property
  -d,--debug                       debug mode will print out full stack traces
     --disableopt <optlist>        disables one or all optimization elements.
                                   optlist can be a comma separated list with
                                   the elements: all (disables all
                                   optimizations), int (disable any int based
                                   optimizations)
  -e <script>                      specify a command line script
  -h,--help                        usage information
  -i <extension>                   modify files in place; create backup if
                                   extension is given (e.g. '.bak')
     --indy                        enables compilation using invokedynamic
  -l <port>                        listen on a port and process inbound lines
                                   (default: 1960)
  -n                               process files line by line using implicit
                                   'line' variable
  -p                               process files line by line and print result
                                   (see also -n)
  -v,--version                     display the Groovy and JVM versions

 

4. 컴파일, 실행

Hello World 라는 내용을 가진 HelloWorld.groovy 파일을 하나 만들구요.

아래와 같이 바로 실행할 수 있구요.

$ ./groovy HelloWorld.groovy
Hello World

아니면 컴파일해서 실행할 수도 있어요.

$ ./groovyc HelloWorld.groovy

이러면 class 파일 생기니까 java로 실행하면 되요.

$ java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/Script
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: groovy.lang.Script
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 13 more

근데 바로 실행하면 위와 같이 에러가 나요. classpath 잡아야 합니다.

$ java -classpath ../lib/groovy-2.4.12.jar:. HelloWorld
Hello World

 

참 쉽죠?