当前位置: 首页 > 面试题库 >

基于Linux OpenJDK Debian的发行版的JAVA_HOME环境变量的正确目标是什么?

侯善
2023-03-14
问题内容

在Windows中,JAVA_HOME必须指向JDK安装文件夹(以便JAVA_HOME/bin包含所有可执行文件和JAVA_HOME/libs所有默认jar库)。

如果我下载了Sun的JDK捆绑软件并将其安装在Linux中,则过程相同。

但是,我需要使用Kubuntu的默认OpenJDK软件包。问题是所有可执行文件都放在中/usr/bin。但是罐子放在里面/usr/share/java。由于它们不在同一个JAVA_HOME文件夹中,因此我在Grails上遇到了麻烦,也许其他期望使用标准Java结构的应用程序也会遇到麻烦。

  1. 如果我使用:
    JAVA_HOME=/usr
    

想要使用任何Java可执行文件的所有应用程序和脚本都可以使用标准过程call $JAVA_HOME/bin/executable。但是,由于罐子位于不同的位置,因此并不总是可以找到它们(例如:在我要的grails
ClassDefNotFoundnative2ascii)。

  1. 另一方面,如果我使用:
    JAVA_HOME=/usr/share/java
    

在Java可执行文件(没有javajavac等等)都可以找到。

那么,JAVA_HOME在基于Debian的Linux 中处理变量的正确方法是什么?

谢谢您的帮助,路易斯


问题答案:

最终对我有用(Grails现在可以正常工作)的工作几乎就像Steve B.指出的那样:

JAVA_HOME=/usr/lib/jvm/default-java

这样,如果用户更改了系统的默认JDK,它JAVA_HOME仍然可以工作。

default-java 是到当前JVM的符号链接。



 类似资料:
  • 我正在Windows上设置Maven,我认为所有的设置都是正确的,但当我运行时,我仍然得到错误“JAVA_HOME环境变量没有正确定义” null null C:\ProgramData\Oracle\Java\JavaPath C:\Apache-Maven-3.6.3\bin 似乎无法弄清楚这些环境变量有什么问题,以至于Maven会给我这个错误。任何帮助都将不胜感激!

  • 我在~/.bash_profile中使用了set 我不理解这个错误,因为JAVA_HOME指向的是JDK而不是JRE?谢谢你的回答!

  • 变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。 值得一提的是,Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。 我们可以使用 env 命令来查看到 Linux 系统中所有的环境变量,执行命令如下: [r

  • 我将环境变量设置为。 在这个目录下,我有一个名为bin的文件夹,它包含一个脚本。如何使用system变量从PowerShell中的任何地方运行此脚本? 我尝试过以下方法,但没有成功:

  • https://create-react-app.dev/docs/advanced-configuration/ 我看好多项目会设置CI为true,但是看解释也没看太懂

  • C:\python27\arcgis10.1;C:\python27\arcgis10.1\scripts;C:\python27\arcgis10.1\lib\site-packages\osgeo;C:\program Files(x86)\common Files\intergraph\grid Analysis sdk\1.0\program;%systemroot%\systemroot