参考
- Mac OSXにOpenJDKをインストール #openjdk #java7 - #侍ズム
- openjdk-osx-build - OpenJDK 7 and 8 Community packages for OS/X Snow, Lion and Mountain Lion - Google Project Hosting
あ、そうそう。MacBookAir買ったんですよ。Twitterでは言ってましたけど、書いてなかった気がします。11インチの最小構成。一番安いのです。SSDだしメモリそんな要らないかなーとか思って。あと初Macなので最悪失敗しても良いようにと。杞憂でしたけど。あとついでにUS配列キーボードです。かっこいいから。キートップのひらがなとかださいじゃないですか。そんな理由。このMBAは私のなのであげません。
そんなわけで新しいコンピュータを買ったら、もちろんJavaとGroovyを入れないといけないです。
Groovyは Homebrew で良いっぽいんですけど、Javaはそうもいかない。なので、先頭にあげたここからダウンロードしてインストールします。なにぶん初Macなんで「dmgってなんやねん?」とかからですけど、何とかなりました。ディスクイメージらしいですね。よくわからないけどzipみたいなもんかなと思ってます。開いたら中にインストーラーがあるので実行。そのままインストール。よくわからないディレクトリにインストールされますけど、とりあえずそれで動いてるからいいや。
GroovyConsoleが動かない
MacだとGroovyConsoleが動かないってのは前から言われてる話。けど今日 kwkmsj さんのツイートが見えまして。
おや。と思ってJAVA_HOMEをJDK7に切り替えてGroovyConsole実行。Airof:~ irof$ groovyconsole Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108) at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130) Caused by: java.lang.NoClassDefFoundError: com/apple/eawt/ApplicationListener at com.apple.mrj.MRJApplicationUtils.registerAboutHandler(MRJApplicationUtils.java:64) at com.apple.mrj.MRJApplicationUtils$registerAboutHandler.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at groovy.ui.script13154933244431558877614.run(script13154933244431558877614.groovy:22) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1121) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1053) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883) at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:793) at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:776) at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1274) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145) at groovy.ui.view.MacOSXMenuBar.run(MacOSXMenuBar.groovy:46) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:361) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) at groovy.ui.Console$__clinit__closure23.doCall(Console.groovy:260) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883) at groovy.lang.Closure.call(Closure.java:410) at groovy.lang.Closure.call(Closure.java:404) at groovy.util.FactoryBuilderSupport.dispathNodeCall(FactoryBuilderSupport.java:838) at groovy.util.FactoryBuilderSupport.doInvokeMethod(FactoryBuilderSupport.java:744) at groovy.util.FactoryBuilderSupport.invokeMethod(FactoryBuilderSupport.java:464) at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1272) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145) at groovy.ui.ConsoleView.run(ConsoleView.groovy:51) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117) at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103) at groovy.util.FactoryBuilderSupport$build.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at groovy.ui.Console.run(Console.groovy:301) at groovy.ui.Console$run$0.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) at groovy.ui.Console.run(Console.groovy:264) at groovy.ui.Console$run.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112) at groovy.ui.Console.main(Console.groovy:199) ... 6 more Caused by: java.lang.ClassNotFoundException: com.apple.eawt.ApplicationListener 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:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 108 more
だめじゃん。まぁこれはわかってます。
この時点で入っているのはGroovy1.8.1でした。Groovy1.8.2が出てます。brew upgrade を叩いてGroovyを更新、ついでにJenkinsも更新。Jenkinsは関係ないですけど。更新が終わったらGroovyConsoleを再度実行。
Airof:~ irof$ groovy -version Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 Groovy Version: 1.8.2 JVM: 1.7.0-internal Airof:~ irof$ groovyconsole Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108) at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130) Caused by: java.lang.NoClassDefFoundError: com/apple/eawt/ApplicationListener (略)
かわらず。
openjdk-osx-buildを見に行ったら OpenJDK-OSX-1.7-universal-20110908.dmg がありました。私が前にインストールしたのは 20110810 になってました。もう一ヶ月も経つんだなーとか思いながら更新。
Airof:~ irof$ java -version Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 registered thread 0x10100b800 registered thread 0x102801000 registered thread 0x100836000 registered thread 0x100836800 registered thread 0x101022800 registered thread 0x101025800 registered thread 0x101026000 registered thread 0x100840000 registered thread 0x101032000 registered thread 0x102855000 registered thread 0x102856000 registered thread 0x101029000 openjdk version "1.7.0-internal" OpenJDK Runtime Environment (build 1.7.0-internal-b00) OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)
なんかスレッドのログでしょうか。出るようになりました。インストール失敗したのかとごのごにょやってみましたけど特に変わらず。気にしない事にします。
とりあえず GroovyConsole は動くようになりました。
ghello だって書けちゃいます。実行するたびに registerd thread がコンソールにぴょこぴょこ出ますけど。これも気にしません。JDK更新したらそのうち出なくなるんじゃないでしょうかね。
GroovyConsoleが終了しない
あと、ターミナルでCtrl+Cしないと終われない
Control+C すれば終了はするんだけど、なんか気持ち悪い。というか Control キー押し辛い。
とりあえず System.exit 0 を GroovyConsole で叩いてみたら、すんなり終了してくれた。GroocyConsole の中身いじったら普通に終了してくれる様になるだろうか。