美文网首页Java服务器端编程Java学习笔记
Ubuntu终端提示sudo: java: command no

Ubuntu终端提示sudo: java: command no

作者: Jvaeyhcd | 来源:发表于2017-06-29 17:53 被阅读1997次

    我在ubuntu里更新Android SDK时,提示“sudo: java: command not found”,根据错误信息我在网上搜索,得到了如下的信息,虽然对我没有帮助。

    Ubuntu下用sudo运行java程序时,要注意此时用户目录为/root,而不是/home/yourname之类的。如果没注意到这一点,就可能会遇到这样一种情况:某个java相关的 把某些配置默认放在/home/yourname,而你用sudo启动的java程序却又去/root下找这个文件,结果没找到; 而如果相关的模块又不报错或者不够高调的报错,你就很难发现错在哪里。

    这种情况一般是因为你的root用户下没有配置java的路径,sudo的环境变量和普通用户的环境变量不一样。sudo的环境变量时集成的root用户的,sudo对应的PATH变量一般是:/sbin:/usr/sbin:/bin:/usr/bin。
    可以使用sudo which java -jar XX.jar试试。

    另外,换一种jdk的配置方法也是可以解决这个问题的。 之前修改的/etc/profile的配置,后来改的是/etc/environment(注意在/etc/environment中不要export PATH=...,不然会出现卡在登陆界面的情况)。配置完/etc/environment后source /etc/environment,sudo java就可以执行了。

    ubuntu终端sudo java提示“command not found”解决办法

    里面有一个方法sudowhich java-jar XX.jar可以代替sudo java,其他的修改/etc/environment和/etc/environment通都没有用。

    最后我在/etc目录下发现/etc/sudoers这个文件,sudo vim /etc/sudoers发现内容如下

    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults    env_reset
    Defaults    mail_badpass
    Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/java/jdk1.8.0_131/bin"
    
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    
    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL
    
    # See sudoers(5) for more information on "#include" directives:
    
    #includedir /etc/sudoers.d
    

    然后我在Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/java/jdk1.8.0_131/bin"添加了/usr/java/jdk1.8.0_131/bin

    最后再次sudo java输入如下:

    azureuser@govlancode:~$ sudo java -version
    java version "1.8.0_131"
    Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
    

    搞定~~~~~~~~~~~~~~

    相关文章

      网友评论

        本文标题:Ubuntu终端提示sudo: java: command no

        本文链接:https://www.haomeiwen.com/subject/jicvcxtx.html