2015-11-26 14 views
11

Próbuję emulować aplikację na moim urządzeniu za pomocą cordova w OpenSuse Leap 42.1.
Ale kiedy próbowałem naśladować aplikację z cordova run pojawia się błąd poniżej:Nieprawidłowy JAVA_HOME podczas kompilacji z 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 

Mam zainstalowaną Javę i ścieżki ustawione w ~/.profile.
Który błąd konfiguracji występuje w moim środowisku?

poniżej mojej .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 

Informacje o wersji 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) 

a tu lista folderze 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 

[edytuj] widoku drzewa z trzy poziomy:

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

Wewnątrz tej ścieżce, nie jest to folder bin. Istnieje folder 'jre'. A wewnątrz niego folder 'bin' i' lib'. –

+0

Wskazałam na Jre/bin i nic. Ten sam błąd. –

Odpowiedz

7

W moim konkretnym przypadku, usunąć i ponownie zainstalować wszystkie pakiety java i dodać jeden (dla 'instynkt'):
Usunięto:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin

I dodał:
java-1_8_0-openjdk
java-1_8_0-openjdk-headless
java-1_8_0-openjdk-plugin
java-1_8_0-openjdk-devel < < - szczęście trafiłem go

The bin wewnątrz wydaje się głównym folderze. Z javac i innymi rzeczami.
Dziękuję wam!

+1

Dzięki, że to naprawdę pomocne –

8

Cordova potrzebuje nie JDKJRE, ponieważ sprawdza javac. Zobacz check_reqs.js wiersz 86. Z twoich komentarzy mówisz, że "Wewnątrz tej ścieżki nie ma folderu bin" w JDK powinieneś mieć katalog bin!

+0

Zaktualizowałem pytanie za pomocą drzewa '/ usr/lib64/jvm'. Naprawdę nie ma folderu bin. A nazwa głównego folderu to 'java-1.8.0-openjdk-1.8.0'. JDK. Muszę zainstalować coś jeszcze? –

6

Twoja ścieżka powinna być jak ten

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

i niż export PATH

+0

Czy przeczytałeś poprzedni komentarz powyżej? –

+0

@RafaelSoufraz tak. wskazujesz 'PATH' na' $ JAVA_HOME/jre/bin', jednak powinno to być wskazane '$ JAVA_HOME/bin' –

+0

Czy zredagowałeś mój pierwszy komentarz? "Wewnątrz tej ścieżki nie ma folderu bin." –

5

To trochę nieporozumienia z pakietami java-X_X_X-openjdk. Zwłaszcza, gdy jesteś przyzwyczajony do domyślnej notacji Oracle.

Część JDK jest myląca, ponieważ OpenJDK jest projektem opartym na otwartym kodzie źródłowym implementacji platformy Java, a nie pakietem JDK, który faktycznie pozwala na tworzenie w Javie. (dokładniejsze informacje tutaj: http://openjdk.java.net/install/index.html)

TLDR:

  1. java-X_X_X-openjdk jest Oracle JRE równoważne.

  2. java-X_X_X-openjdk-devel jest odpowiednikiem JDK firmy Oracle.

0

Sprawdzanie java & instalacji JDK rozwiązać mój problem .. Instalacja javy & JDK i spróbuj ..

Aby zbudować i uruchomić aplikacje, trzeba zainstalować SDK dla każdej platformy chcesz kierować. Alternatywnie, jeśli używasz przeglądarki do programowania, możesz użyć platformy przeglądarki, która nie wymaga żadnych zestawów SDK platformy.

Aby sprawdzić, czy spełniają wymagania na budowę platformy:

$ 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 
Powiązane problemy