web-dev-qa-db-fra.com

Java_HOME non valide lors de la construction avec cordova

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
11
Rafael Soufraz

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! 

7
Rafael Soufraz

Cordova a besoin d'un JDKet non d'un JREname__, car elle vérifie javacname__. 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 JDKvous devriez avoir un répertoire binname__!

9
dan

Votre chemin devrait être comme ça

PATH=$PATH:$Android_HOME/bin:$Java_HOME/bin

et que export PATH

6
Bilal Shah

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:  

  1. Java-X_X_X-openjdk est l'équivalent JRE d'Oracle. 

  2. Java-X_X_X-openjdk-devel est l'équivalent JDK d'Oracle.

5
Mateusz Was

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
0
BEJGAM SHIVA PRASAD