【问题标题】:Java has too many level symbolic linksJava 有太多的层级符号链接
【发布时间】:2021-06-08 13:26:44
【问题描述】:

好吧,我正试图在我的 linux 机器(Kali-Linux)上安装 forge。虽然我曾经并且仍然无法访问 forge 文件(.jar)。由于存在一个问题缺少一个名为“java”的命令。

我当前遇到的问题是sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-16.0.1/bin/java 1,使用此命令时我得到的响应为 update-alternatives: error: cannot stat file '/bin/java': Too many levels of symbolic links. 当我尝试在 /bin 中 ls 时,java 符号链接有一个奇怪的符号(只是想提一下,因为它看起来很奇怪)

有没有办法解决这个问题?

【问题讨论】:

  • 请发布ls -l /bin/java的输出。
  • 好了,我已经编辑了帖子
  • /etc/alternatives/java 指向哪里?
  • 顺便说一句,在/bin 中使用java 而不是/usr/bin 有点不寻常。我认为这在基于 Debian 的系统上是不正常的,所以这可能是问题的一部分。你是手动修改的吗?
  • /etc/alternatives/java 没有指向任何地方。

标签: java linux file


【解决方案1】:

“符号链接级别过多”消息意味着在尝试解析对象路径时已遍历 40 个符号链接。

这几乎总是发生,因为您有一个直接或间接指向自身的符号链接。限制(和检查)的目的是防止内核进入无限循环。

那么,为什么会发生在这里?嗯,这并不完全清楚。但似乎较早的update-alternatives 运行以错误符号链接的形式留下了一些“残骸”。如果“/bin/java”已经指向“/etc/alternatives/java”,那么“/etc/alternatives/java”应该是...的符号链接其他地方。

尝试以下方法:

  1. 使用update-alternatives --remove-all java 清除java 命令的任何替代项。 (如果由于同样的问题而失败,请先尝试第 2 步,然后重试此步骤。添加 --force 也可能会有所帮助。)

  2. 如果“/bin/java”和“/usr/bin/java”符号链接仍然存在,请删除它们。

  3. 确保您已经实际安装了 Java(已经安装了!),并且“/usr/lib/jvm/jdk-16.0.1/bin/java”是可执行文件的正确路径。运行/usr/lib/jvm/jdk-16.0.1/bin/java -version进行检查。

  4. 运行sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-16.0.1/bin/java 1

请注意,update-alternatives 实际上并没有安装任何东西。为了使命令正常工作,您需要(在这种情况下)安装了 Java JRE 或 JDK 或 Kali Java 包已经

请注意,删除损坏的“替代”符号链接链不会造成任何真正的伤害。您可以随时清理它们并重建它们。 (如有必要,手动。)替代机制只是管理符号链接的一种奇特方式。

【讨论】:

  • 呃,你说的第一个命令的响应是update-alternatives: error: cannot stat file '/bin/java': Too many levels of symbolic links我很困惑。
  • 那么,如果我先删除符号链接呢?并去删除 java 替代品?
  • 你不能造成任何真正的伤害。它们只是符号链接。另外,请尝试使用--force 选项。如果这没有帮助,也可以添加 --debug
  • 嘿,我先尝试 rm 符号链接,你猜怎么着?它工作了:)
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 2015-07-14
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多