2014-10-10 5 views
0

Я только что обновил свой компьютер до yosemite, и моя градация для проектов в Android Studio больше не может найти JVM.Gradle and yosemite

This is my gradlew 

    #!/usr/bin/env bash 

############################################################################## 
## 
## Gradle start up script for UN*X 
## 
############################################################################## 

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 
DEFAULT_JVM_OPTS="" 

APP_NAME="Gradle" 
APP_BASE_NAME=`basename "$0"` 

# Use the maximum available, or set MAX_FD != -1 to use that value. 
MAX_FD="maximum" 

warn () { 
    echo "$*" 
} 

die () { 
    echo 
    echo "$*" 
    echo 
    exit 1 
} 

# OS specific support (must be 'true' or 'false'). 
cygwin=false 
msys=false 
darwin=false 
case "`uname`" in 
    CYGWIN*) 
    cygwin=true 
    ;; 
    Darwin*) 
    darwin=true 
    ;; 
    MINGW*) 
    msys=true 
    ;; 
esac 

# For Cygwin, ensure paths are in UNIX format before anything is touched. 
if $cygwin ; then 
    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 
fi 

# Attempt to set APP_HOME 
# Resolve links: $0 may be a link 
PRG="$0" 
# Need this for relative symlinks. 
while [ -h "$PRG" ] ; do 
    ls=`ls -ld "$PRG"` 
    link=`expr "$ls" : '.*-> \(.*\)$'` 
    if expr "$link" : '/.*' > /dev/null; then 
     PRG="$link" 
    else 
     PRG=`dirname "$PRG"`"/$link" 
    fi 
done 
SAVED="`pwd`" 
cd "`dirname \"$PRG\"`/" >&- 
APP_HOME="`pwd -P`" 
cd "$SAVED" >&- 

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 

# Determine the Java command to use to start the JVM. 
if [ -n "$JAVA_HOME" ] ; then 
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 
     # IBM's JDK on AIX uses strange locations for the executables 
     JAVACMD="$JAVA_HOME/jre/sh/java" 
    else 
     JAVACMD="$JAVA_HOME/bin/java" 
    fi 
    if [ ! -x "$JAVACMD" ] ; then 
     die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 

Please set the JAVA_HOME variable in your environment to match the 
location of your Java installation." 
    fi 
else 
    JAVACMD="java" 
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 

Please set the JAVA_HOME variable in your environment to match the 
location of your Java installation." 
fi 

# Increase the maximum file descriptors if we can. 
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 
    MAX_FD_LIMIT=`ulimit -H -n` 
    if [ $? -eq 0 ] ; then 
     if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 
      MAX_FD="$MAX_FD_LIMIT" 
     fi 
     ulimit -n $MAX_FD 
     if [ $? -ne 0 ] ; then 
      warn "Could not set maximum file descriptor limit: $MAX_FD" 
     fi 
    else 
     warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 
    fi 
fi 

# For Darwin, add options to specify how the application appears in the dock 
if $darwin; then 
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 
fi 

# For Cygwin, switch paths to Windows format before running java 
if $cygwin ; then 
    APP_HOME=`cygpath --path --mixed "$APP_HOME"` 
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 

    # We build the pattern for arguments to be converted via cygpath 
    ROOTDIRSRAW=`find -L/-maxdepth 1 -mindepth 1 -type d 2>/dev/null` 
    SEP="" 
    for dir in $ROOTDIRSRAW ; do 
     ROOTDIRS="$ROOTDIRS$SEP$dir" 
     SEP="|" 
    done 
    OURCYGPATTERN="(^($ROOTDIRS))" 
    # Add a user-defined pattern to the cygpath arguments 
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then 
     OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 
    fi 
    # Now convert the arguments - kludge to limit ourselves to /bin/sh 
    i=0 
    for arg in "[email protected]" ; do 
     CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 
     CHECK2=`echo "$arg"|egrep -c "^-"`         ### Determine if an option 

     if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then     ### Added a condition 
      eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 
     else 
      eval `echo args$i`="\"$arg\"" 
     fi 
     i=$((i+1)) 
    done 
    case $i in 
     (0) set -- ;; 
     (1) set -- "$args0" ;; 
     (2) set -- "$args0" "$args1" ;; 
     (3) set -- "$args0" "$args1" "$args2" ;; 
     (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 
     (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 
     (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 
     (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 
     (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 
     (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 
    esac 
fi 

# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 
function splitJvmOpts() { 
    JVM_OPTS=("[email protected]") 
} 
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "[email protected]" 

Я нашел мои JVMs на Macintosh HD/Library/Java/JavaVirtualMachines. Что я могу изменить, чтобы исправить град?

+0

Является 'java' на вашем пути? Что происходит, когда вы вводите 'java -version' в терминал? –

+0

$ java -version java version "1.8.0_40-ea" Рабочая среда Java (TM) SE Runtime Environment (build 1.8.0_40-ea-b09) 64-разрядная виртуальная машина Java HotSpot TM (сборка 25.40-b13, смешанный режим) – mgild

+0

Что такое сообщение об ошибке, и где вы его видите? Что делает 'echo $ JAVA_HOME' печать? –

ответ

0

Когда я получил такую ​​ошибку (в ОС Linux). Я нашел 2 общих причин:

  1. Что Питер N упомянутых выше (что является основной причиной), т.е. java --version и which java выход должен быть действительным, и указывает на правильное расположение JAVA вы хотите.

  2. Как-то, значение переменной JAVA_HOME получило '\ r'. Вы можете увидеть, если это вы выполняете gradle (исполняемый файл в командной строке с использованием опции -x debug в Bash/соответствующей оболочке).

Даже dos2unix не исправил это.

Наконец я сделал следующее, чтобы решить эту проблему в моем ~/.bashrc (пользователя, который работает Gradle), и это предполагает, JAVA_HOME экспортируется в дочерние процессы (т.е. export JAVA_HOME в файле ~/.bashrc):

JAVA_HOME=$(echo $JAVA_HOME| tr -d '\r')

и это исправлено (при условии, что JAVA_HOME настроен на правильное местоположение для JDK).

0

Я фактически установил его, перейдя в Файл-> Структура проекта и изменение JDK 1.7