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