3

Mac OS x 10.7

grails> !java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

grails> !which java
/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/java

I want to use Java 1.7 NIO in one of the services and i got the following:

grails> run-app 
...
| Error Compilation error: startup failed:
/path/to/Acquiring.groovy: 7: unable to resolve class java.nio.file.FileSystems
 @ line 7, column 1.
   import java.nio.file.FileSystems
   ^
/path/to/Acquiring.groovy: 8: unable to resolve class java.nio.file.Path
 @ line 8, column 1.
   import java.nio.file.Path
   ^
2 errors
| Error Error running script run-app : org.codehaus.groovy.grails.cli.ScriptExitException (Use --stacktrace to see the full trace)

What a hell!? Ok. I'm checking java version in the code:println

println System.getProperty("java.version").startsWith('1.6')?
"I use 1.6?! WTF?!":"It's ok"

And finally i see

I use 1.6?! WTF?!

Or more specifically

    RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
    println System.getProperty("java.version").startsWith('1.6')?"I use 1.6?!         WTF?!":"It's ok";
    println "VM_vmVendor: " + RuntimemxBean.vmVendor
    println "VM_getName: " + RuntimemxBean.getName()
    println "VM_getVmVersion: " + RuntimemxBean.getVmVersion()
    println "VM_getVmName: " + RuntimemxBean.getVmName()
    println "VM_namevendor: " + RuntimemxBean.getLibraryPath()

    println "VM_getSystemProperties:" + 
            "\n ================= \n" +          RuntimemxBean.getSystemProperties() +
            "\n ================= "

    List<String> arguments = RuntimemxBean.getInputArguments();
    arguments.each { print it+ "\n" }

turns to be:

I use 1.6?! WTF?!
VM_vmVendor: Apple Inc.
VM_getName: [email protected]
VM_getVmVersion: 20.14-b01-445
VM_getVmName: Java HotSpot(TM) 64-Bit Server VM
VM_namevendor: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
VM_getSystemProperties:
 ================= 
[java.vm.version:20.14-b01-445, java.vendor.url:http://www.apple.com/, sun.jnu.encoding:MacRoman, grails.interactive.mode.enabled:true, java.vm.info:mixed mode, user.dir:/Users/me/Sites/java/grailsnew, grails.buildScope:all, sun.cpu.isalist:, java.awt.graphicsenv:apple.awt.CGraphicsEnvironment, sun.os.patch.level:unknown, catalina.useNaming:true, tools.jar:/Library/Java/Home/lib/tools.jar, java.io.tmpdir:/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/, user.home:/Users/me, java.awt.printerjob:apple.awt.CPrinterJob, java.version:1.6.0_41, file.encoding.pkg:sun.io, java.vendor.url.bug:http://bugreport.apple.com/, mrj.build:11M4107, file.encoding:UTF-8, line.separator:
, sun.java.command:org.codehaus.groovy.grails.cli.support.GrailsStarter --main org.codehaus.groovy.grails.cli.GrailsScriptRunner --conf /Users/me/.grails/wrapper/2.2.0/grails-2.2.0/conf/groovy-starter.conf --classpath , javax.sql.DataSource.Factory:org.apache.commons.dbcp.BasicDataSourceFactory, java.vm.specification.vendor:Sun Microsystems Inc., grails.version:2.2.0, catalina.home:/Users/me/.grails/2.2.0/projects/grailsnew/tomcat, java.vm.vendor:Apple Inc., base.name:grailsnew, java.class.path:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.0.5.jar:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0/dist/grails-bootstrap-2.2.0.jar:/System/Library/Java/Support:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0/lib/org.springsource.springloaded/springloaded-core/jars/springloaded-core-1.1.1.jar, awt.nativeDoubleBuffering:true, sun.io.unicode.encoding:UnicodeLittle, os.arch:x86_64, user.language:en, user.name:root, java.runtime.version:1.6.0_41-b02-445-11M4107, sun.boot.class.path:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar, gopherProxySet:false, sun.cpu.endian:little, groovy.starter.conf:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0/conf/groovy-starter.conf, grails.env:development, ftp.nonProxyHosts:local|*.local|169.254/16|*.169.254/16, awt.toolkit:apple.awt.CToolkit, base.dir:/Users/me/Sites/java/grailsnew, sun.boot.library.path:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries, java.vm.name:Java HotSpot(TM) 64-Bit Server VM, java.home:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home, net.sf.ehcache.skipUpdateCheck:true, grails.disable.exit:true, java.endorsed.dirs:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/endorsed, sun.management.compiler:HotSpot 64-Bit Tiered Compilers, jna.platform.library.path:/usr/lib:/usr/lib, java.naming.factory.initial:org.apache.naming.java.javaURLContextFactory, java.runtime.name:Java(TM) SE Runtime Environment, catalina.base:/Users/me/.grails/2.2.0/projects/grailsnew/tomcat, grails.home:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0, java.library.path:.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java, file.separator:/, java.specification.vendor:Sun Microsystems Inc., java.vm.specification.version:1.0, sun.java.launcher:SUN_STANDARD, grails.env.default:true, grails.env.set:true, user.timezone:Europe/Moscow, program.name:grails, http.nonProxyHosts:local|*.local|169.254/16|*.169.254/16, os.name:Mac OS X, path.separator::, java.ext.dirs:/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext, sun.arch.data.model:64, java.specification.name:Java Platform API Specification, os.version:10.7.5, mrj.version:1070.1.6.0_41-445, grails.env.initializing:false, springloaded:profile=grails;cacheDir=/Users/me/.grails/2.2.0/, grails.cli.args:, java.class.version:50.0, user.country:US, java.vendor:Apple Inc., socksNonProxyHosts:local|*.local|169.254/16|*.169.254/16, java.vm.specification.name:Java Virtual Machine Specification, org.mortbay.xml.XmlParser.NotValidating:true, java.specification.version:1.6, grails.server.factory:org.grails.plugins.tomcat.TomcatServerFactory, grails.shutdown.hook.installed:true, java.naming.factory.url.pkgs:org.apache.naming]
 ================= 
-Xserver 
-Xmx768M 
-Xms64M  
-XX:PermSize=32m
-XX:MaxPermSize=256m
-Dfile.encoding=UTF-8
-javaagent:/Users/me/.grails/wrapper/2.2.0/grails-2.2.0/lib/org.springsource.springloaded/springloaded-core/jars/springloaded-core-1.1.1.jar
-Xverify:none
-Dspringloaded=profile=grails;cacheDir=/Users/me/.grails/2.2.0/
-Dgrails.home=/Users/me/.grails/wrapper/2.2.0/grails-2.2.0
-Dtools.jar=/Library/Java/Home/lib/tools.jar
2
  • 1
    Could it be that even having Java 7 you've got Java 6 on your PATH and your IDE is taking that? Commented Mar 4, 2013 at 15:05
  • 1
    Need more info. Are you running this from an IDEA? If so, which one? If not, how are you executing it from the command line? Commented Mar 4, 2013 at 15:31

2 Answers 2

2

I had the same problem, Grails is using java from /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK. You can force Grails to use different version by pointing it in $JAVA_HOME - add following to your ~/.profile or global one /etc/profile

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home; export JAVA_HOME

source your profile file and Grails should run on 1.7.0_13 version

NOTE: I'm not Java developer, I need get grails up and running fast - this might not be the best answer

Sign up to request clarification or add additional context in comments.

1 Comment

This may work, but it requires manual updating when Java has been updated. Use it to test if setting JAVA_HOME makes a difference if you like, but I don't recommend it as a final solution.
2

I recommend

export JAVA_HOME=$(/usr/libexec/java_home)

in your .profile, .bashrc, or other file that is sourced on login.

See http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.