我最近设置了一台OSX机器,在Eclipse内部运行时,我无法让Maven接收JAVA_HOME.
到目前为止我做了以下事情:
export JAVA_HOME=$(/usr/libexec/java_home)-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java/etc/mavenrc使用echo JAVA_HOME=\/ usr/libexec/java_home -v 1.7` | 设置JAVA_HOME sudo tee -a/etc/mavenrc`从CLI工作一切都像预期的那样.java -version打印:
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)
echo $JAVA_HOME 打印:
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
mvn -v 打印:
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /usr/local/Cellar/maven/3.1.1/libexec
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", …Run Code Online (Sandbox Code Playgroud) 我刚开始使用jenv,我跟着一篇博客文章,解释了如何jenv在MacOSX上使用和设置多个java版本.但是我现在遇到的问题是设置JAVA_HOME.当我切换java环境时,jenv我想确保JAVA_HOME我的bash_profile也相应地改变.
我怎么做?
我跟着我 ~/.bash_profile
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
Run Code Online (Sandbox Code Playgroud) 作为一个在*NIX系统(OS X,Ubuntu,...)之间切换的Java开发人员,尽管我总能"启动"我的JDK并且正在运行,但似乎在许多需要JAVA_HOME的软件包中没有明确的JAVA_HOME定义要设置 :
例如
因此,我对这个问题有2个问题(任何见解都会受到欢迎,但具体来说,我有这两个问题):
1)mac os X java安装是否将目标从"JavaVM.frameworks"目录复制到usr/bin?
2)JAVA_HOME的"定义"是什么?显然,我们不能将JAVA_HOME简单地定义为"安装java的地方",因为这个定义是模糊的,因为java既可以存在于HOME位置(即/ System/Library/Fraemworks/.....),也可以或者,它也可以直接在/ usr/bin目录中?
我的想法
我相信JAVA_HOME实际上是指不仅仅是指二进制"java"程序.JAVA_HOME可能是指一组java相关目录和二进制文件的位置......但是,我仍然不清楚这包含了什么,而且我所提议的这个定义是否足够精确到有用.
我试图在系统范围内添加JAVA_HOME,并将JAVA_HOME/bin添加到PATH(Ubuntu 12.04).如果我在/ etc/environment的末尾添加以下两行,我之后就无法登录了.如果我将2行添加到/ etc/profile,一切正常.那问题呢?
export JAVA_HOME="/usr/lib/jvm/java-7-oracle"
export PATH="$PATH:$JAVA_HOME/bin"
Run Code Online (Sandbox Code Playgroud)
/ etc/environment(第1行)中已经有以下行:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Run Code Online (Sandbox Code Playgroud) 我在Windows 8.1上下载了Logstash-1.5.0,并尝试在命令提示符下运行它.
首先,我检查了java版本.然后更改目录,logstash-1.5.0/bin
然后输入命令,logstash -e 'input { stdin { } } output { elasticsearch { host => localhost } stdout { } }'它给出了以下错误:
找不到JAVA_HOME指定的java安装
Logstash文件夹位于C:上,Java版本为1.7.0_25.我已将JAVA_HOME环境变量设置到jdk/ bin目录,但它仍然无效.
我是Logstash的新手.有人可以告诉我为什么会发生这种情况并帮助我解决这个问题吗?
我想在Ubuntu 14.04中安装一些软件(Shibboleth).我已经安装了Java 7 OpenJDK /usr/lib/jvm/,我有这些行/usr/environment
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)
如果我输入echo $JAVA_HOME正确的话/usr/lib/jvm/java-7-openjdk-amd64.但是,当我尝试安装Shibboleth时,我总是得到Error: JAVA_HOME is not defined correctly. Cannot execute java.
有趣的是,如果我输入java命令它可以工作(它指的是/ usr/lib/java,这是一个指向正确的链接).但是,当我尝试运行bash bin/install.shShibboleth时,我收到了JAVA_HOME错误
我已经尝试设置相同结果JAVA_HOME的jre文件夹.有任何想法吗?
这是我的Java环境:
~: java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
Run Code Online (Sandbox Code Playgroud)
但是,当编译后尝试执行程序时,出现以下错误:
Error: LinkageError occurred while loading main class ClassName
java.lang.UnsupportedClassVersionError: ClassName has been
compiled by a more recent version of the Java Runtime
(class file version 55.0), this version of the Java Runtime
only recognizes class file versions up to 54.0
Run Code Online (Sandbox Code Playgroud)
我的 PATH 和 JAVA_HOME 变量都指向这个版本的 java。我下载了其他版本,但似乎它们没有在系统中注册:
update-alternatives --display java
java - auto mode …Run Code Online (Sandbox Code Playgroud) 我在这里看到了许多关于 JAVA_HOME 变量的其他帖子,并且我已经尝试了所有这些。
当我尝试从终端执行任何 gradle 相关任务时,我收到以下错误:
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_191
Please set the JAVA_HOME variable in your environment to match the location of your Java Installation.
Run Code Online (Sandbox Code Playgroud)
如果我运行,WHERE java我会得到C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe和c:\jdk\bin\java.exe,这让我相信这其中存在问题。
我添加C:\Program Files\Java\jdk1.8.0_191到我的路径中并添加JAVA_HOME为指向 的系统变量C:\Program Files\Java\jdk1.8.0_191。我缺少什么?一段时间以来,我一直在努力反对这个问题。任何帮助将不胜感激。
编辑:
我已经确认C:\Program Files\Java\jdk1.8.0_191确实存在并且内容是
我无法在 macOS BigSur 中更改 java 版本。我有以下版本:
当我执行此命令时
/usr/libexec/java_home -V
Run Code Online (Sandbox Code Playgroud)
我有以下版本:
Matching Java Virtual Machines (3):
11.0.8 (x86_64) "Oracle Corporation" - "Java SE 11.0.8" /Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
1.8.261.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_261 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
我想切换到 java 1.8 作为默认版本,所以我执行以下命令:
export JAVA_HOME=/usr/libexec/java_home -v 1.8.0_261
Run Code Online (Sandbox Code Playgroud)
然后当我检查 java 版本时:
java -version
Run Code Online (Sandbox Code Playgroud)
我仍然得到旧的(更高的)
java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用?