javac找不到

在CentOS7上输入java后会显示java命令的详细信息,但是输入javac会产生如下图显示。为什么?怎么解决?
javac.jpg

fish - Hadooper

赞同来自: vitocorleone

openjdk就是jdk的一种,你执行了yum list | fgrep java么?看到了什么? 装个jdk不会有什么坏影响,执行了yum list| fgrep java之后,会看到类似如下的输出:

java-1.7.0-openjdk-devel.x86_64            1:1.7.0.95-2.6.4.0.el6_7     updates  java-1.7.0-openjdk-javadoc.noarch          1:1.7.0.95-2.6.4.0.el6_7     updates  java-1.7.0-openjdk-src.x86_64              1:1.7.0.95-2.6.4.0.el6_7     updates  java-1.8.0-openjdk.x86_64                  1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-debug.x86_64            1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-demo.x86_64             1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-demo-debug.x86_64       1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-devel.x86_64            1:1.8.0.71-1.b15.el6_7       updates 

yum install java-1.7.0-openjdk-devel.x86_64装个jdk1.7或者java-1.8.0-openjdk-devel.x86_64装个jdk1.8就可以。

wangxiaolei

赞同来自:

配置下系统环境变量JAVA_HOME

fish - Hadooper

赞同来自:

没有安装jdk吧?

vitocorleone

赞同来自:

没安装jdk!但是输入javac会显示javac命令的详细信息,是不是因为CentOS7自带了openjdk(如下图输入java -version后的显示)?是不是有了openjdk就不用安装jdk了?

fish - Hadooper

赞同来自:

jre中也会有java,但javac需要装jdk。   yum list | fgrep java,挑个带devel的进行yum install。

wangxiaolei

赞同来自:

可以使用命令which java可查看当前java命令用的是那个目录下的。 自己也查看下当前/usr/bin/目录下是不是有个可执行命令java,但是没有javac命令。 使用 fish说的命令安装下jdk 安装完后,配置下系统环境变量JAVA_HOME 编辑profile文件,执行命令vim /etc/profile 在文件最后加上面内容:
export JAVA_HOME=jdk的安装路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
再执行命令source /etc/profile使配置的文件立即生效。

vitocorleone

赞同来自:

是不是如果输入java命令,出现java的命令的详细信息,就证明CentOS中已经有了jre了?是不是只要有了jre,就可以在CentOS上运行eclipse了,而不用安装jdk了?

wangxiaolei

赞同来自:

jre是运行时环境,安装eclipse,编写代码需要经过jdk编译,java代码才可以在运行时环境运行的。 所以也需要安装jdk

vitocorleone

赞同来自:

输入java -version,会产生如下图的显示,这个图是不是说明机器中已经自带安装了openjdk?所以就不用安装jdk了?还有我安装上eclipse后,能在eclipse中运行程序,是不是也说明机器中已经自带安装了jdk?

fish - Hadooper

赞同来自:

不是,java是jre中就有的工具,java -version只能说明机器中有java,但是否有完整的jdk(包括javac、jhat等)还不一定。

fish - Hadooper

赞同来自:

“运行程序”,是指运行已经编译好的项目,还是编译项目? 如果是编译项目,需要javac(也就是jdk中跟开发相关的工具),如果只是运行,编好的应用,有运行环境(就是jre就可以)。   现在你碰到了什么没有解决的问题?

vitocorleone

赞同来自:

在机器中运行mvn compile,出现如下的截图,其中1处显示的build failure,失败。并且有2处的perhaps you are running on a jre rather than a jdk?是不是说明机器没有自带jdk,只自带了jre?

fish - Hadooper

赞同来自:

是啊,没找到编译器,就是没找到jdk。 Eclipse中如果可以编译,有可能已经装了JDK,但没有配置好环境变量(比如JAVA_HOME、PATH没配置好),在命令行中执行的时候也会找不到javac。   你执行一下javac,如果command not found,就是没把编译器所在的目录加到env的PATH当中,或者没装。   你要么设置一下PATH(如果已经装了),如果不确定自己到底是否装了JDK,直接执行yum install java-1.8.0-openjdk-devel.x86_64 ,上面问答中已经提到了,你是否这样做了呢?

fish - Hadooper

赞同来自:

系统不会自带jdk。 请执行yum install进行安装。

fish - Hadooper

赞同来自:

PATH配置可以在/etc/profile中添加,对所有用户生效。

vitocorleone

赞同来自:

env命令

fish - Hadooper

赞同来自:

是的,我前面说了,env用于看到当前环境中的变量值。 有更多的问题么?

vitocorleone

赞同来自:

如网址http://javawind.net/p144中的内容,有的centos是自带jdk的

fish - Hadooper

赞同来自:

cd /usr/lib/jvm,看看下面有什么,就知道了。

vitocorleone

赞同来自:

cd /usr/lib/jvm后ls得到下图。这是系统自带的jdk。

fish - Hadooper

赞同来自:

在这下面find . -name javac 能找到javac么?

vitocorleone

赞同来自:

输入find . -name javac得到下图

fish - Hadooper

赞同来自:

说明这下面没有完整安装的jdk啊,都是jre。 为何不愿意执行yum install java-1.7.0-openjdk-devel.x86_64 或者 yum install java-1.8.0-openjdk-devel.x86_64? 到底有什么顾虑......?

vitocorleone

赞同来自:

如下图。先输入rpm -qa | grep jdk得到已安装的jdk的全名。然后输入rpm -ql java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64(这个名字是从上条命令产生的结果中copy paste而来)。这样就得到安装的其中一个“jdk的安装路径”为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64。

fish - Hadooper

赞同来自:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64里的bin目录下面有javac么?   yum list | fgrep jdk,你应看到类似如下的信息:

java-1.8.0-openjdk.x86_64                  1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-debug.x86_64            1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-demo.x86_64             1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-demo-debug.x86_64       1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-devel.x86_64            1:1.8.0.71-1.b15.el6_7       updates  java-1.8.0-openjdk-devel-debug.x86_64      1:1.8.0.71-1.b15.el6_7       updates 

请一定要装java-xxx-openjdk-devel而不是java-xxx-openjdk,得是含有devel的这个包,开发人员使用的,才带javac这类的编译器工具。

vitocorleone

赞同来自:

如下图的路径的bin目录下没有javac,有java

fish - Hadooper

赞同来自:

java-1.8.0-openjdk-devel.x86_64,不需要debug的就可以。

vitocorleone

赞同来自:

当安装好jdk后,用rpm的2个命令查找jdk的安装路径,得到下第1张图(当然可以去掉”| grep bin“,但是去掉后自己就需要在很多行中去辨别哪行才是安装路径)。另外,我们用"yum install java-1.8.0-openjdk-devel.x86_64"命令安装jdk,而用"rpm -qa | grep jdk"看到安装好后jdk名称变为java-1.8.0-openjdk-devel-1.8.0.71-2.b15.el7_2.x86_64,而用"rpm -ql java-1.8.0-openjdk-devel-1.8.0.71-2.b15.el7_2.x86_64"搜索安装路径的时候,看到名称又变为java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64。这时,安装好后我们再到/usr/lib/jvm下ls就得到第2张图。可以看到虽然和没装jdk之前(前面的回复中有相同的对/usr/lib/jvm的ls查看)一样还是2个jdk,但是我们会发现jdk1,8这个版本和前面查看的系统自带的版本的详细的名称是不同的,前面是1.8.0.65,安装后是1.8.0.71

要回复问题请先登录注册