繁体   English   中英

使用cordova构建时无效的JAVA_HOME

[英]Invalid JAVA_HOME when build with cordova

我试图在OpenSuse Leap 42.1中使用cordova模拟我的设备上的应用程序。
但当我尝试使用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

[edit]查看具有三个级别的树:

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

Cordova需要JDK而不是JRE ,因为它正在检查javac 请参见check_reqs.js86行。 根据您的评论,您在JDK中说“ 在此路径中,没有bin文件夹 ”,您应该有一个bin目录!

在我的具体情况下,我删除并重新安装所有Java包并添加一个(为'本能'):
我删除了:
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 << - 幸运的是我点了它

出现主文件夹内的bin。 随着javac和另一件事。
感谢你们!

你的道路应该是这样的

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

而不是export PATH

这与java-X_X_X-openjdk软件包有点误解。 特别是当您习惯默认Oracle表示法时。

JDK部分令人困惑,因为OpenJDK是Java平台的开源实现的项目,而不是实际允许您使用Java开发的JDK包。 (更准确的信息: http//openjdk.java.net/install/index.html

TLDR:

  1. java-X_X_X-openjdk是Oracle的JRE等价物。

  2. java-X_X_X-openjdk-devel是Oracle的JDK等价物。

验证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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM