使用 cordova 构建时 JAVA_HOME 无效

Posted

技术标签:

【中文标题】使用 cordova 构建时 JAVA_HOME 无效【英文标题】:Invalid JAVA_HOME when build with cordova 【发布时间】:2016-03-01 00:57:48 【问题描述】:

我正在尝试使用 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

[编辑] 三级视图树:

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

【问题讨论】:

这个路径里面没有bin文件夹。有jre 文件夹。在其中,binlib 文件夹。 我指向 jre/bin,什么也没有。同样的错误。 【参考方案1】:

Cordova 需要JDK 而不是JRE,因为它正在检查javac。见check_reqs.js 线86。在您的 cmets 中,您是说“在此路径中,没有 bin 文件夹”在 JDK 中您应该有一个 bin 目录!

【讨论】:

我用/usr/lib64/jvm 的树更新了问题。真的没有bin文件夹。主文件夹的名称是java-1.8.0-openjdk-1.8.0。 JDK。我还需要安装什么吗?【参考方案2】:

在我的具体情况下,我删除并重新安装所有 java 包并添加一个(用于“本能”): 我删除了:java-1_8_0-openjdkjava-1_8_0-openjdk-headlessjava-1_8_0-openjdk-plugin

并添加:java-1_8_0-openjdkjava-1_8_0-openjdk-headlessjava-1_8_0-openjdk-pluginjava-1_8_0-openjdk-devel 幸运的是我成功了

主文件夹内的 bin 出现。用 javac 和其他东西。 谢谢你们!

【讨论】:

谢谢,真的很有帮助【参考方案3】:

你的路径应该是这样的

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

并且比 export PATH

【讨论】:

@RafaelSoufraz 是的。您将 PATH 指向 $JAVA_HOME/jre/bin 但是它应该指向 $JAVA_HOME/bin 你红了我的第一条评论吗? “在这个路径里面,没有 bin 文件夹。” 我知道你想帮助我。但我已经尝试过这个步骤。谢谢。 你能做到JAVA_HOME=/usr/lib/jvm/default-java这个吗。原因是您的可执行文件位于 /usr/bin 文件夹中,这就是其中没有 bin 文件夹的原因。也关注这个***.com/questions/663658/…它可能对你有帮助。【参考方案4】:

对 java-X_X_X-openjdk 包有点误解。尤其是当您习惯使用默认的 Oracle 表示法时。

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

TLDR:

    java-X_X_X-openjdk 是 Oracle 的 JRE 等效项。

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于使用 cordova 构建时 JAVA_HOME 无效的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 入门

使用 gradle 构建 Cordova 项目时覆盖 Java 版本

使用cordova构建ios时出错

使用 PhoneGap/Cordova 为 Android 构建时,在 Mac OS X 10.9 Mavericks 上执行命令“ant”时出错

使用 Phonegap 构建时,cordova-plugin-whitelist 不起作用

构建 Cordova 3.4 应用程序时架构 i386 的未定义符号