오늘은 그루비에 대해서 아주 빨리 알아보려고 합니다.
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
참 쉽죠?