ubuntu 找不到系统 Java 编译器。确保您已安装 JDK(而不仅仅是 JRE)

Posted

技术标签:

【中文标题】ubuntu 找不到系统 Java 编译器。确保您已安装 JDK(而不仅仅是 JRE)【英文标题】:ubuntu Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) a 【发布时间】:2013-12-21 04:54:19 【问题描述】:

在 ubuntu 12 上,我正在尝试运行 fuse-jna 的示例程序。我收到以下错误消息

syed@ubuntu:~/Downloads/fuse-jna-master/examples$ ./hellofs.sh ~/hellofs
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable to point to the according directory.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

运行java -version 命令显示:

syed@ubuntu:~/Downloads/fuse-jna-master/examples$ java -version
java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.10)
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)

javac -version的输出:

syed@ubuntu:~/Downloads/fuse-jna-master/examples$ javac -version
javac 1.6.0_27

这些都安装在我的系统上,看这里的图片

http://i40.tinypic.com/2hf2j4z.png

请指导我在 Ubuntu 上运行这个程序

【问题讨论】:

JDK(不仅仅是 JRE),检查你有没有 javac.exe。尝试运行 javac 运行 javac 命令会显示很长的输出,其中一部分是“Usage: javac 其中可能的选项包括:-g 生成所有调试信息 -g:none 生成否调试信息 -g:lines,vars,source 只生成一些调试信息 -nowarn 不生成警告 -verbose 输出有关编译器正在做什么的消息 -deprecation 输出使用过时 API 的源位置 .......... ..... 了解 shell 脚本实际在做什么会很有趣。使用 bash -x 运行脚本以找出答案。还有 JAVA_HOME 变量的设置。 谢谢,这是环境变量的问题。设置环境变量并重新启动ubuntu后,现在它运行正常。 【参考方案1】:

安装 JDK

sudo apt-get install openjdk-7-jdk

已编辑:初始答案包含 jre 包(不是 jdk)

【讨论】:

它也没有解决问题。我面临的错误消息与我在第一篇文章中分享的相同。 你的意思是openjdk-7-jdk,看起来jre已经在那里了。【参考方案2】:

这些都不能在我的 Ubuntu 上运行,真的。原来,有类似/usr/lib/jvm/default-java 的东西,它是一个指向已安装 Java 版本的符号链接。

有趣的是,这是指向 /usr/lib/jvm/java-7-openjdk-i386(JDK!),但 JAVA_HOME 指向完全不同的位置 - 我当前安装最新的 JDK8 的位置。

我只是更新了符号链接以指向正确的位置,但它可能会被 OpenJDK7 的更新覆盖...我想我必须摆脱 OpenJDK。

【讨论】:

【参考方案3】:

这是环境变量的问题。更正etc/environment中的java_home环境变量并重启ubuntu后,现在运行正常了。感谢您的指导。

【讨论】:

您能分享一下您的环境变量更改吗?我没能解决这个问题。 我在 etc/envirnment 的新行中添加了 JAVA_HOME="/usr/lib/jvm/java-6-openjdk-i386"。问题解决了。【参考方案4】:

我也遇到了同样的问题,看到这个帖子后,我试着做

gradle -v
java -version
javac -version

javac 失败。但是,ubuntu 提示我安装 javac 并显示以下消息

21:52:17->javac
The program 'javac' can be found in the following packages:
* default-jdk
* ecj
* gcj-4.8-jdk
* openjdk-7-jdk
* gcj-4.6-jdk
* openjdk-6-jdk
Try: sudo apt-get install <selected package>

使用 openjdk-7-jdk 安装 javac 并将以下 2 行添加到我的 bashrc 后,gradle 开始工作

JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"
PATH="$PATH:$JAVA_HOME/bin"

这里,/usr/lib/jvm/java-7-openjdk-amd64/jre 是包含通过 which java 找到的 java 二进制文件的目录

【讨论】:

我在 Windows 上,所以在找到您检查 javac -version 的建议之前,我检查了 Internet 的所有其余部分。谢谢!【参考方案5】:

    安装JDK

    sudo apt-get install openjdk-7-jdk
    

    让你的 $JAVA_HOME 指向新安装的 JDK

    echo $JAVA_HOME
    # prints nothing
    
    sudo echo 'JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64' >> /etc/profile
    source /etc/profile
    
    echo $JAVA_HOME
    # /usr/lib/jvm/java-7-openjdk-amd64
    

    更新您的 java 命令符号链接

    java -version
    # java version "1.6.0_32"
    # OpenJDK Runtime Environment (IcedTea6 1.13.4) (6b32-1.13.4-1~deb7u1)
    # OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
    which java
    # /usr/bin/java
    ls -l /usr/bin/java
    # lrwxrwxrwx 1 root root 22 Sep 20 21:22 /usr/bin/java -> /etc/alternatives/java
    ls -l /etc/alternatives/java
    # lrwxrwxrwx 1 root root 42 Sep 21 00:01 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
    
    sudo rm /etc/alternatives/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk-amd64/bin/java /etc/alternatives/java
    
    java -version
    # java version "1.7.0_65"
    # OpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-5~deb7u1)
    # OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
    

    再试一次

    gradle compileJava
    # :compileJava
    
    # BUILD SUCCESSFUL
    
    # Total time: 9.397 secs
    

【讨论】:

【参考方案6】:

更具体地说,尝试添加一个 gradle.properties 文件并在那里指定 org.gradle.java.home。当我遇到同样的问题时,它对我有用。

https://docs.gradle.org/current/userguide/build_environment.html

【讨论】:

以上是关于ubuntu 找不到系统 Java 编译器。确保您已安装 JDK(而不仅仅是 JRE)的主要内容,如果未能解决你的问题,请参考以下文章

电脑安装Java,提示找不到URL,怎么解决?

ubuntu64位系统编译时头文件找不到的问题(可以查看g++ -v路径,设置export C_INCLUDE_PATH)

VS2017:“找不到资源编译器 DLL。请确保路径正确。”

VMware设置共享文件夹之后Ubuntu中看不到怎么办

Ubuntu找不到OpenCV里的xml文件

VMware设置共享文件夹之后Ubuntu中看不到怎么办