Linux中JAVA已在路径中但权限被拒绝

9
我正在尝试在使用Yocto(Linux)的Intel Edison上启用JAVA,问题是在解压缩zip文件后,我能够检查版本,但将其放入路径后,由于权限不足,我无法访问java。
具体来说,我正在尝试遵循这个tutorial,但我卡在了


. .profile

自下一步开始

java -version

出现与下面粘贴的相同问题,权限被拒绝或者像之前一样,找不到Java。

以下是输出的快速概述:

root@dedsec1:~/java/jdk1.7.0_67/bin# ./java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) Client VM (build 24.65-b04, mixed mode)
root@dedsec1:~/java/jdk1.7.0_67/bin# cd
root@dedsec1:~# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/root/bin:/home/root/java/jdk1.7.0_67/bin:/home/root/java/jdk1.7.0_67/bin
root@dedsec1:~# ./java -version
-sh: ./java: Permission denied
root@dedsec1:~#

我到底错过了什么?我已经在Java上设置了chmod -x,但似乎没有影响它。

离题了。不要在root账户下进行正常工作。 - Jayan
尝试这个:root@dedsec1:# java -version 不是这个:root@dedsec1:# ./java -version - Srinivasu
3个回答

14
sudo chmod a+x /usr/bin/java
sudo chmod a+x /usr/bin/javac
sudo chmod a+x /usr/bin/javaws
sudo chown -R root:root /usr/lib/jvm/jdk1.8.0

很不幸,sudo和类似的选项都不可用,不知道yocto有什么其他选择 :/ - Deko
虽然我纠正了自己,运行 chmod a+x /root/bin/java 就解决了问题,现在我能够调用 java 了,但是 a 到底是什么意思呢?我知道 x 表示可执行。 - Deko
@DanelK a+x 的意思是为所有用户添加可执行权限。 - Srinivasu
啊,第一行就是我三天搜索所需的答案!关闭多个打开的选项卡并愉快地继续前进 - Koorosh

2

root的主文件夹不在“/home”下。请更改此设置。

/home/root/java/jdk1.7.0_67/bin:/home/root/java/jdk1.7.0_67/bin

to

/root/java/jdk1.7.0_67/bin

此外,
/home/root/bin

应该是

/root/bin

出于类似的原因,当编写脚本时,您可以使用$HOME,它会扩展到用户的主目录所在位置。因此,

PATH="$HOME/bin:$HOME/java/jdk1.7.0_67/bin"

编辑

我不建议您将java链接到$HOME/bin。让我们设置一个JAVA_HOME,并将其移到PATH的前面,如下所示:

export JAVA_HOME=$HOME/java/jdk1.7.0_67
export PATH="$JAVA_HOME/bin:$HOME/bin:$PATH"

0

您需要以Root身份登录

. .profile

如果那不起作用,你可以获取你的文件来源。
source .profile 

请注意,“source”是“.”(句号)的同义词。

1
点之间有一个空格。并且它是源的同义词。 - Elliott Frisch
当我执行ssh root@ip时,被要求输入root密码,希望我已经作为root用户登录了:S 但是source .profile的输出给了我这个:http://pastebin.com/iqcCn1bm - Deko
只需输入java -version,无需使用./。 - Kalenda
一旦您的可执行文件可以在路径上找到,您就不再需要使用 ./ 了。 - Kalenda
是的,我已经弄清楚了,但它似乎根本找不到Java。 - Deko

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