2015-11-26 12 views
11

Sto tentando di emulare un'app sul mio dispositivo con cordova in OpenSuse Leap 42.1.
Ma quando ho cercato di emulare l'applicazione con la cordova run ottengo l'errore qui sotto:JAVA_HOME non valido durante la compilazione con cordova

cordova run 
Running command: /home/soufraz/Projects/apps/myproject/platforms/android/cordova/run 
ERROR: Error: Failed to run "java -version", make sure that you have a JDK installed. 
You can get it from: http://www.oracle.com/technetwork/java/javase/downloads. 
Your JAVA_HOME is invalid: /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0 

ERROR running one or more of the platforms: Error: /home/soufraz/Projects/apps/myproject/platforms/android/cordova/run: Command failed with exit code 2 
You may not have the required environment or OS to run this project 

ho la Java installata ei percorsi impostati in ~/.profile.
Qual è l'errore di configurazione nel mio ambiente?

Sotto la mia .profile:

JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0 
export JAVA_HOME 

ANDROID_HOME=/home/soufraz/Install/android-sdk-linux 
export ANDROID_HOME 

PATH=$PATH:$ANDROID_HOME:$JAVA_HOME 

Informazioni sulla versione del Java:

java -version 
openjdk version "1.8.0_60" 
OpenJDK Runtime Environment (build 1.8.0_60-b27) 
OpenJDK 64-Bit Server VM (build 25.60-b23, mixed mode) 

Ed ecco l'elenco delle cartelle JVM:

ls -l 
total 28 
lrwxrwxrwx 1 root root 24 Nov 12 11:28 java-1.7.0-openjdk -> java-1.7.0-openjdk-1.7.0 
drwxr-xr-x 1 root root 6 Nov 12 11:28 java-1.7.0-openjdk-1.7.0 
drwxr-xr-x 1 root root 6 Nov 11 17:26 java-1.8.0-openjdk-1.8.0 
lrwxrwxrwx 1 root root 21 Nov 11 17:26 jre -> /etc/alternatives/jre 
lrwxrwxrwx 1 root root 27 Nov 12 11:28 jre-1.7.0 -> /etc/alternatives/jre_1.7.0 
lrwxrwxrwx 1 root root 28 Nov 12 11:28 jre-1.7.0-openjdk -> java-1.7.0-openjdk-1.7.0/jre 
lrwxrwxrwx 1 root root 27 Nov 11 17:26 jre-1.8.0 -> /etc/alternatives/jre_1.8.0 
lrwxrwxrwx 1 root root 28 Nov 11 17:26 jre-1.8.0-openjdk -> java-1.8.0-openjdk-1.8.0/jre 
lrwxrwxrwx 1 root root 29 Nov 11 17:26 jre-openjdk -> /etc/alternatives/jre_openjdk 

[modifica] Visualizza albero con tre livelli:

tree -L 3 
. 
├── java-1.7.0-openjdk -> java-1.7.0-openjdk-1.7.0 
├── java-1.7.0-openjdk-1.7.0 
│   └── jre 
│    ├── bin 
│    └── lib 
├── java-1.8.0-openjdk-1.8.0 
│   └── jre 
│    ├── bin 
│    └── lib 
├── jre -> /etc/alternatives/jre 
├── jre-1.7.0 -> /etc/alternatives/jre_1.7.0 
├── jre-1.7.0-openjdk -> java-1.7.0-openjdk-1.7.0/jre 
├── jre-1.8.0 -> /etc/alternatives/jre_1.8.0 
├── jre-1.8.0-openjdk -> java-1.8.0-openjdk-1.8.0/jre 
└── jre-openjdk -> /etc/alternatives/jre_openjdk 
+0

All'interno di questo percorso, non ci sia la cartella bin. C'è la cartella 'jre'. E al suo interno, la cartella 'bin' e' lib'. –

+0

Ho indicato jre/bin e niente. Lo stesso errore. –

risposta

7

Nel mio caso specifico, rimuovere e reinstallare tutti i pacchetti Java e aggiungere uno (per 'istinto'):
Ho rimosso:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin

e ha aggiunto:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin
java-1_8_0-openjdk-devel < < - per fortuna ho colpito

Lo scomparto interno appare cartella principale. Con javac e altre cose.
Grazie ragazzi!

+1

Grazie è davvero utile –

8

Cordova ha bisogno di un non JDK un JRE, dal momento che è il controllo per javac. Vedere check_reqs.js riga 86. Dai tuoi commenti stai dicendo che "All'interno di questo percorso, non c'è la cartella bin" in un JDK devi avere una directory bin!

+0

Ho aggiornato la domanda con un albero di '/ usr/lib64/jvm'. Davvero non c'è una cartella bin. E il nome della cartella principale è 'java-1.8.0-openjdk-1.8.0'. JDK. Devo installare qualcos'altro? –

6

Il percorso dovrebbe essere così

PATH=$PATH:$ANDROID_HOME/bin:$JAVA_HOME/bin

e di export PATH

+0

Hai letto il mio ultimo commento sopra? –

+0

@RafaelSoufraz si. stai puntando 'PATH' su' $ JAVA_HOME/jre/bin', tuttavia dovrebbe essere puntato a '$ JAVA_HOME/bin' –

+0

Hai redindato il mio primo commento? "All'interno di questo percorso, non c'è la cartella bin." –

5

È un po 'di incomprensione con i pacchetti java-X_X_X-openjdk. Soprattutto quando si è abituati alla notazione predefinita di Oracle.

La parte JDK è confusa, perché OpenJDK è un progetto di un'implementazione open source della piattaforma Java e non di un pacchetto JDK che consente effettivamente di svilupparsi in Java. (informazioni più precise qui: http://openjdk.java.net/install/index.html)

TLDR:

  1. java-X_X_X-OpenJDK è di Oracle JRE equivalente.

  2. java-X_X_X-openjdk-devel è l'equivalente JDK di Oracle.

0

Verifica java & installazioni JDK risolto il mio problema .. installare Java JDK & e cercare ..

per costruire e gestire le applicazioni, è necessario installare SDK per ogni piattaforma che si desidera di destinazione. In alternativa, se si utilizza il browser per lo sviluppo, è possibile utilizzare la piattaforma browser che non richiede alcun SDK della piattaforma.

Per verificare se si soddisfano i requisiti per la costruzione della piattaforma:

$ cordova requirements 
Requirements check results for android: 
Java JDK: installed . 
Android SDK: installed 
Android target: installed android-19,android-21,android-22,android-23,Google Inc.:Google APIs:19,Google Inc.:Google APIs (x86 System Image):19,Google Inc.:Google APIs:23 
Gradle: installed 

Requirements check results for ios: 
Apple OS X: not installed 
Cordova tooling for iOS requires Apple OS X 
Error: Some of requirements check failed 
Problemi correlati