J'essaie d'imiter une application sur mon appareil avec Cordova dans OpenSuse Leap 42.1.
Mais lorsque j'ai essayé d'imiter l'application avec le cordova run
, l'erreur suivante apparaît:
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
J'ai installé Java et les chemins définis dans ~/.profile
.
Quelle est l’erreur de configuration dans mon environnement?
Sous mon .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
Info sur la version 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)
Et voici la liste des dossiers 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
[edit] Voir l'arbre avec trois niveaux:
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
Dans mon cas spécifique, je supprime et réinstalle tous les packages Java et en ajoute un (pour "instinct"):
J'ai enlevé:Java-1_8_0-openjdk
Java-1_8_0-openjdk-headless
Java-1_8_0-openjdk-plugin
Et ajouté:Java-1_8_0-openjdk
Java-1_8_0-openjdk-headless
Java-1_8_0-openjdk-plugin
Java-1_8_0-openjdk-devel
<< - heureusement, je l'ai frappé
Le bac dans le dossier principal apparaît. Avec javac et d'autres choses.
Merci les gars!
Cordova a besoin d'un JDK
et non d'un JRE
name__, car elle vérifie javac
name__. Voir check_reqs.js line 86
. D'après vos commentaires, vous dites que " Dans ce chemin, il n'y a pas de dossier bin " dans un JDK
vous devriez avoir un répertoire bin
name__!
Votre chemin devrait être comme ça
PATH=$PATH:$Android_HOME/bin:$Java_HOME/bin
et que export PATH
C'est un peu un malentendu avec les paquets Java-X_X_X-openjdk. Surtout quand vous êtes habitué à la notation Oracle par défaut.
La partie JDK est source de confusion car OpenJDK est un projet d’une implémentation open source de la plate-forme Java} et non un paquet JDK vous permettant de développer en Java. (Informations plus précises ici: http://openjdk.Java.net/install/index.html )
TLDR:
Java-X_X_X-openjdk est l'équivalent JRE d'Oracle.
Java-X_X_X-openjdk-devel est l'équivalent JDK d'Oracle.
La vérification des installations Java et JDK a résolu mon problème. Installez Java et JDK et essayez ..
Pour créer et exécuter des applications, vous devez installer des kits de développement logiciel (SDK) pour chaque plate-forme que vous souhaitez cibler. Si vous utilisez un navigateur pour le développement, vous pouvez également utiliser une plate-forme de navigateur qui ne nécessite aucun SDK de plate-forme.
Pour vérifier si vous répondez aux exigences pour la construction de la plate-forme:
$ 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