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

5
在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上运行这个程序。

3
JDK(不仅是JRE),请检查您是否有javac.exe。尝试运行javac。 - andy
运行javac命令会显示一个很长的输出,其中一部分如下所示:“用法:javac <选项> <源文件> 其中可能的选项包括: -g 生成所有调试信息 -g:none 不生成调试信息 -g:{lines,vars,source} 仅生成一些调试信息 -nowarn 不生成警告 -verbose 输出编译器正在执行的消息 -deprecation 输出使用已弃用API的源位置 .............” - user584910
1
运行脚本以查明其实际操作,使用 bash -x 命令。同时也了解 JAVA_HOME 环境变量被设置为什么值。 - Ingo
谢谢,这是环境变量的问题。在设置环境变量并重新启动Ubuntu后,现在它正常运行。 - user584910
7个回答

5

安装JDK

sudo apt-get install openjdk-7-jdk

编辑:初始答案中的软件包为jre(而不是jdk)


它也没有解决问题。我面临着与我在第一篇帖子中分享的相同的错误信息。 - user584910
1
你的意思是 openjdk-7-jdk,看起来 jre 已经存在了。 - Ian Roberts

3
在我的 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后,现在它可以正常运行。感谢指导。


你能分享一下你的环境变量更改吗?我一直没有解决这个问题。 - HankB
我在etc/environment的新行中添加了JAVA_HOME="/usr/lib/jvm/java-6-openjdk-i386"。问题已解决。 - user584910

2
  1. Install JDK

    sudo apt-get install openjdk-7-jdk
    
  2. Make your $JAVA_HOME point to the newly installed 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
    
  3. Update your java command symlink

    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)
    
  4. Try again

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

2

我曾遇到同样的问题,在看到这篇帖子后,我试着做了以下操作

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并将以下两行添加到我的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 是包含 Java 二进制文件的目录,可以通过 which java 命令查找到。


我使用的是Windows系统,在找到你的建议并检查javac -version之前,我搜索了整个互联网。谢谢! - Noumenon

0
对我来说,问题在于我有JRE但没有JDK。 以前我曾经有以下输出。
$ java -version
java 18.0.1.1 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)

我一安装JDK,我的输出就变成了以下内容

$ sudo apt install default-jre

$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.04, mixed mode, sharing)

这解决了问题。我还在文件etc/environment中添加了最后两行。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
JAVA_HOME="/usr/lib/jvm/jdk-18"
PATH="$PATH:$JAVA_HOME/bin"

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接