Can not start androidstudio only in console

2019-07-21 15:03发布

问题:

Hi my problem is the next, I downloaded Android Studio and if I go to

/path/android-studio/bin

and I execute studio.sh

I get the following error:

No JDK found. Please validate either STUDIO_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.

Now if I export JAVA_HOME

 export JAVA_HOME=/usr/java/jdk1.7.0_25/

and execute studio.sh Android Studio works but now I create a Symbolic Link to studio.sh

ln -s /path/android-studio/bin/studio.sh /usr/bin/androidstudio

and if I run androidstudio in console this one works, but now I want to create a Gnome launcher

So I did this:

vi /usr/share/AndroidStudio.desktop

and I put the next code into the file:

[Desktop Entry]
Name=Android Studio
GenericName=IDE para Android
X-GNOME-FullName=IDE para Android - Android Studio
Comment=Desarrolla aplicaciones para Android
Exec= /usr/bin/androidstudio
Terminal=false
StartupNotify=true
Type=Application
Icon=/opt/android-studio/bin/idea.png
Categories=Development;
Name[es_ES]=Android Studio

but at the moment I run AndroidStudio launcher this one gives me the next error:

 No JDK found. Please validate either STUDIO_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.

I think doing again:

 export JAVA_HOME=/usr/java/jdk1.7.0_25/

Will fix the problem but no, the launcher still without working :C Thank's in advance!

EDIT

All I did it as su user.

回答1:

Te contestaré en español porque tu inglés es bastante anemico mano (para los demás, conozco a éste morro)...

¿Que distribución de Linux estás usando? En algunos casos es buena practica instalar el JDK mediante el gestor de paquetes, por ejemplo para Fedora, y posteriormente modificar las alternativas, eso depende de tus necesidades de contar con diferentes opciones de JDK (Oracle, OpenJDK, etc. y sus correspondientes versiones).

En Ubuntu puedes revisar Ubuntu manpage para mayor información de update-alternatives.

Adicionalmente, tienes que agregar a tu PATH la referencia a la carpeta bin/ de tu JDK definida en el export JAVA_HOME=/donde/tengas/tu/jdk, así como a tu CLASSPATH la referencia a tu carpeta lib/es decir:

export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib

Nota: Otra cosa que tienes que observar es que en los export es una buena práctica no colocar el último slash (observa los dos exports que acabo de agregar, si tuvieran ese último slash en el primero se vería algo así en tu PATH : .../donde/tengas/tu/jdk//bin... not cool, bro! ¬¬)

Te recomendaría que adicionalmente a modificar las alternativas (en el caso de ser necesario en tu distro), utilices un enlace simbólico para cualquier JDK que no instales mediante el gestor de paquetes y así tener mayor flexibilidad, por ejemplo:

lrwxrwxrwx  1 root      root        10 jul 16 19:01 java -> oracle-jdk-7
drwxr-xr-x  8 root      root      4096 nov 14  2012 jdk1.6.0_25
drwxr-xr-x  8 root      root      4096 nov 14  2012 jdk1.6.0_37
drwxr-xr-x  8 root      root      4096 feb 15 15:21 jdk1.7.0_15
drwxr-xr-x  8 root      root      4096 jun  5 23:07 jdk1.7.0_25
lrwxrwxrwx  1 root      root        11 jul 16 19:00 oracle-jdk-6 -> jdk1.6.0_37
lrwxrwxrwx  1 root      root        11 jul 16 19:00 oracle-jdk-7 -> jdk1.7.0_25

y al verificar la versión del JDK se observa:

[root@rojas opt]# java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

en el caso de necesitar modificar la alternativa, harías referencia a la ruta /ruta/completa/enlace/simbolico/java y con solo cambiar dicho enlace cambiarías de JDK.

Si esto no te parece muy buena opción, pues tendrías que agregar todas esas versiones a las alternativas (y cada que descargues una nueva, repetir el proceso)... es cosa de que veas que te resulta más cómodo.

Una vez que terminaste de hacer esos exports, ¿ejecutaste el comando source?

source /path/a/archivo/donde/tienes/todos/esos/exports

yo, personalmente, agrego todos esos export en /etc/profile

Ejecutar el Android-Studio como root me parece demasiado hardcore, pero bueno.



回答2:

In my case, even though I had configured JDK_HOME and JAVA_HOME, Android studio would not start.
The problem turned out to be that we don't need to have to sudo a program t make it work. I had installed Android Studio into /usr/local and did sudo ./studio.sh to start it but it complained it couldn't find the JAVA_HOME and JDK_HOME variables. But when I installed it into my home folder, it worked without any problem by directly running ./studio.sh.

The problem for a new user might be about realizing that most copy, move andrm operations in /usr/local result in needing to use sudo, and so a person might use sudo ./studio when in usr/local, which is unnecessary and the system searches for the root user's configuration of JAVA_HOME and JDK_HOME which it does not find.



回答3:

Open studio.sh and after the lines:

MKTEMP=`which mktemp`
RM=`which rm`
CAT=`which cat`
TR=`which tr`

add

JAVA_HOME=/usr/java/latest

And that's it!