【问题标题】:The program 'jshell' is currently not installed when trying to run jshell on Ubuntu尝试在 Ubuntu 上运行 jshell 时,当前未安装程序“jshell”
【发布时间】:2018-12-20 20:10:59
【问题描述】:

我已经下载并“手动”安装了适用于 Linux 64 位版本的 JDK 10(适用于 Ubuntu 16.04), Oracle Java SE Development Kit (注意:我想下载 Java9 JDK,但它不再受支持,而是参考了 Java 10 SE 开发工具包)。

当我尝试从终端窗口运行 jshell 时,出现以下错误,

当前未安装程序“jshell”。运行“jshell” 请让您的管理员安装该软件包 'openjdk-9-jdk-headless' 您必须启用名为 '宇宙'

我不知道为什么当我安装了经典的 java 版本时,消息要求我安装 openjdk。当我运行“which jshell”时,我没有返回任何详细信息。

谁能帮我安装jshell 并正常工作?

【问题讨论】:

  • 根据您的第二个屏幕截图,似乎 JShell 已正确安装。您是否尝试使用 ./jshell 在该文件夹中运行 JShell?如果有效,问题只是路径配置。
  • 感谢 Mincong - 我刚刚尝试过,是的,它有效!我有点困惑,如果我使用“update-alternatives”来配置我的 java 版本 - 是否只公开我配置的文件,即“java”和“javac”?为了访问bin 目录中的所有其他文件,我是否还需要将 java 'bin' 目录显式添加到我的路径中?
  • 抱歉,我不了解更新替代方案,也没有使用 Linux……我会让其他人在这个领域为您提供帮助。唯一可以确定的是,JDK 的 bin 文件夹必须存在于您的 PATH 中——这样您就可以直接调用 jshell
  • 我在你的 PATH 中没有看到 Java 目录

标签: java ubuntu-16.04 jshell


【解决方案1】:

JShell 是一个开发工具。您应该下载并安装 Java Development Kit 以运行 jshell,而不仅仅是 Java 运行时环境。

【讨论】:

  • 我确实有 - 如果您查看我在上面发布的链接,您可以看到我下载的内容。我刚刚检查了“bin”目录,可以看到其中包含“jshell”。
  • @robbie70 那么在 PATH 中包含 /bin 怎么样?
  • @robbie70 然后您的PATH 变量包括JRE 安装的bin 目录。您必须将其值更改为指向 JDK 的 bin 目录。
  • Eugene / Ernest - 我的 path 中没有包含 java。相反,我使用 update-alternatives 来配置我的 java 版本。
  • 那么这就是必须进行更改的地方。检查这个:askubuntu.com/questions/315646/…
【解决方案2】:

在 Linux,特别是 Ubuntu 上,最好不要通过apt 安装开发工具。证明该规则的例外是RVM,它纯粹是通过apt 安装的,因此它会在apt 之外动态下载ruby 和ruby gem。

对于 Java,等效为 SDKman,通过 curl 安装。一旦你有了SDKman然后你可以安装Java和其他Java类型的工具。

SDKman 在行动:

thufir@dur:~$ 
thufir@dur:~$ sdk list java
================================================================================
Available Java Versions
================================================================================
     12.ea.20-open                                                              
     11.0.1-zulu                                                                
 > * 11.0.1-open                                                                
     10.0.2-zulu                                                                
     10.0.2-open                                                                
     9.0.7-zulu                                                                 
     9.0.4-open                                                                 
   * 8.0.192-zulu                                                               
     8.0.191-oracle                                                             
     7.0.201-zulu                                                               
     6.0.119-zulu                                                               
     1.0.0-rc-10-grl                                                            
     1.0.0-rc-9-grl                                                             
     1.0.0-rc-8-grl                                                             


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
thufir@dur:~$ 

一般umakeUbuntu Make会安装IDE或其他开发工具。目前,umake 最好安装为snap

结果是先安装SDKman,再安装snap,再用snap安装umake。在umakeSDKman 之间,您的工具应该是最新的。

(Ruby 使用了类似的RVM,这启发了SDKman。)

【讨论】:

    【解决方案3】:

    我按照上面 Ernest Kiwele 和其他人给出的提示设置了我的 JAVA_HOME 部分,如 How to set JAVA_HOME in Linux for all users 还可以在我的 profile.d 目录中创建一个sh 脚本。谢谢你的帮助。

    因为我使用update-alternatives 配置了我的Java,所以我对我的解决方案感觉不太舒服。如果没有同时设置其他依赖变量,我不知道为什么人们建议使用update-alternatives 来设置要使用的 Java 版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多