使用 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
文件夹。在其中,bin
和 lib
文件夹。
我指向 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-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 和其他东西。 谢谢你们!
【讨论】:
谢谢,真的很有帮助【参考方案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 无效的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 构建 Cordova 项目时覆盖 Java 版本
使用 PhoneGap/Cordova 为 Android 构建时,在 Mac OS X 10.9 Mavericks 上执行命令“ant”时出错