VM初始化时发生错误。/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/keytool存在破损的ZIP库。

4

我一直在执行keytool、java、javac等命令时遇到错误:

Error occurred during initialization of VM
Corrupted ZIP library: /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/libzip.dylib

我尝试重新安装我的JRE和JDK,但是对于jdk1.8.0_231和jdk13.0.1两个版本来说,同样的问题仍然存在。

我也尝试使用Android Studio安装中的Java二进制文件,但是它给出了相同的错误。我使用的二进制文件为:"/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool"

我目前在macOS Catalina上运行Java 8 Update 231。

1个回答

2

虽然这是一个老问题,但我也曾经为此苦恼过,现在终于找到了解决方法。

首先,我注意到我能够以超级用户身份运行java,所以像这样的东西可以正常工作:

sudo java ...
sudo javac ...

然而,这很烦人并且有点奇怪,所以我开始查找并发现在我的~/.zshrc(你的可能是~/.bashrc或者你使用的其他shell)中我的$PATH中有$JAVA_HOME,如下所示:
export $JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk_whatever/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

我删除了第二行,并使用位于/usr/bin的Java,这是默认设置并已在我的路径中,这样做起作用了。我仍然可以使用$JAVA_HOME切换我的Java版本,并且它能正常工作。
但是,我无法使用/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java运行Java,而且一些东西仍然出了问题,例如我的IntelliJ中的maven/run配置UI工具。
最后,我注意到我的.zshrc中还有另一行有问题:
export DYLD_LIBRARY_PATH="/usr/local/lib/"

我不太确定为什么我添加了那个,但是我将其删除后,刷新了我的终端,突然一切都正常了。

将值前置/后置到此环境变量可能没问题,但我还没有需要这样做。


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