我在 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
只能暂时解决此问题。因此,您应该永久解决此问题,方法是首先运行该命令,然后使用 vim
或 nano
编辑.bash_profile
和.bashrc
文件。
如果您看到一行显示
export DYLD_INSERT_LIBRARIES=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/jre/lib/libjsig.dylib
只需删除此行。如果它插入了除该库之外的任何其他库,只需从/Library
到libsig.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
并查看问题是否仍然存在。