在 mac 上使用 rm -rf /Library/Java/JavaVirtualMachines/jdkmajor.



我在 mac book pro 上使用 rm -rf/Library/Java/JavaVirtualMachines/jdkmajor.minor.macro[_update].jdk 卸载 jdk 7 后遇到问题

我也安装了java 8,Intellij运行良好。但是任何运行java版本或mvn的尝试都会崩溃并显示错误:

dyld:无法加载插入的库"/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Content/Home/jre/lib/libjsig.dylib",因为找不到图像

[1] 1216 跟踪陷阱 MVN

同时,我可以使用IntelliJ构建所有项目。

我什至无法运行 vim - 我有同样的错误。所以,我的问题:1. 卸载JDK的正确方法是什么?2. 在这种情况下,我应该怎么做才能恢复系统?

正如 mattias 在他的回答中提到的,你的问题源于你的一个 bash 启动文件中的命令,它告诉 bash 在尝试运行任何命令之前加载某些动态库。

对于当前正在运行的终端,使用 unset DYLD_INSERT_LIBRARIES 只能暂时解决此问题。因此,您应该永久解决此问题,方法是首先运行该命令,然后使用 vimnano 编辑.bash_profile.bashrc文件。

如果您看到一行显示

export DYLD_INSERT_LIBRARIES=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/jre/lib/libjsig.dylib

只需删除此行。如果它插入了除该库之外的任何其他库,只需从/Librarylibsig.dylib擦除此特定库,包括以下:(如果它是最后一个,则为前面的:)。

退出终端,再次运行它,确保您的问题已解决。

您删除JDK所遵循的过程是Oracle建议的正确过程。问题是,在该机器的历史记录中,您或使用它的任何人将该库添加到DYLD_INSERT_LIBRARIES环境变量中,这导致了问题。此外,这不会影响 IntelliJ 的原因是它没有通过 bash 运行,因此bash命令不会影响它。

如果要删除任何其他Java版本,则应执行与以前相同的操作,但要事先确保DYLD_INSERT_LIBRARIES中的任何内容都指向/Library/Java/JavaVirtualMachines中的某些内容。

看看你的.bash_profile并尝试寻找

export DYLD_INSERT_LIBRARIES=/usr/lib/libSaturnFE.dylib
export DYLD_FORCE_FLAT_NAMESPACE=1

或类似的东西。这些可能会导致您遇到的问题。尝试将它们注释掉并重新加载您的 bash

exec bash

并查看问题是否仍然存在。

最新更新