Недопустимый JAVA_HOME при сборке с помощью cordova

Я пытаюсь эмулировать приложение на моем устройстве с помощью cordova в OpenSuse Leap 42.1.
Но когда я попытался эмулировать приложение с cordova run Я получаю ошибку ниже:

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

У меня установлена ​​Java и пути в ~/.profile,
Какая ошибка конфигурации в моей среде?

Ниже моего .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

Информация о версии 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)

А вот список папок 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

[править] Просмотр дерева с тремя уровнями:

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

5 ответов

Решение

В моем конкретном случае я удаляю и переустанавливаю все java-пакеты и добавляю один (для 'instinct'):
Я удалил:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin

И добавил:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin
java-1_8_0-openjdk-devel << - к счастью, я ударил его

Появляется корзина внутри главной папки. С javac и другими вещами.
Спасибо вам, ребята!

Кордова нужна JDK не JRE, так как он проверяет javac, Смотрите строку check_reqs.js 86, Из ваших комментариев вы говорите, что "внутри этого пути нет папки bin" в JDK ты должен иметь bin каталог!

Ваш путь должен быть таким

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

и тогда export PATH

Это небольшое недоразумение с пакетами java-X_X_X-openjdk. Особенно, когда вы используете стандартную нотацию Oracle.

Часть JDK сбивает с толку, потому что OpenJDK - это проект реализации платформы Java с открытым исходным кодом, а не JDK-пакет, фактически позволяющий вам разрабатывать на Java. (более точная информация здесь: http://openjdk.java.net/install/index.html)

TLDR:

  1. java-X_X_X-openjdk является эквивалентом JRE Oracle.

  2. java-X_X_X-openjdk-devel является эквивалентом JDK для Oracle.

Проверка установки Java и JDK решила мою проблему. Установите Java и JDK и попробуйте..

Чтобы создавать и запускать приложения, вам нужно установить SDK для каждой платформы, на которую вы хотите настроить таргетинг. В качестве альтернативы, если вы используете браузер для разработки, вы можете использовать платформу браузера, которая не требует каких-либо платформ SDK.

Чтобы проверить, удовлетворяете ли вы требованиям для построения платформы:

$ 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
Другие вопросы по тегам