【问题标题】:jmap command not found找不到 jmap 命令
【发布时间】:2014-11-01 03:07:30
【问题描述】:

我试图在我的CentOS 服务器上使用jmap 命令,但它一直告诉我即使我安装了 JDK 也找不到该命令。

这里是命令java -version的输出:

java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

我该如何解决这个问题?

【问题讨论】:

标签: java linux centos


【解决方案1】:

java 路径必须在“PATH”系统属性中。

$JAVA_HOME/bin

【讨论】:

    【解决方案2】:

    centos 上的 OpenJDK 不包含 jmap 实用程序。在另一个平台上测试或使用jhat java_pid1234.hprof 命令在另一个平台上检查转储。

    jhat 在大型转储上运行可能会很慢,甚至会耗尽内存!我使用jhat -port 7000 -J-mx2048m java_pid1234.hprof,所以你的电脑需要足够的内存。

    【讨论】:

      【解决方案3】:

      您应该可以在 java-1.8.0-openjdk-devel-debugjava-1.7.0-openjdk- 中找到 jmap devel-debug 或 Redhat/Centos 上的 java-1.6.0-openjdk-devel-debug 软件包。要安装它,请以 root 身份运行以下命令:

      yum install java-1.8.0-openjdk-devel-debug
      

      为了完整起见,这里是检查哪些包包含 jmap 的命令:

      yum whatprovides '*/jmap'
      

      这是一个示例输出:

      1:java-1.6.0-openjdk-devel-1.6.0.37-1.13.9.4.el7_1.x86_64 : OpenJDK Development Environment
      Repo        : updates
      Matched from:
      Filename    : /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.37.x86_64/bin/jmap
      
      
      
      1:java-1.7.0-openjdk-devel-1.7.0.91-2.6.2.3.el7.x86_64 : OpenJDK Development Environment
      Repo        : base
      Matched from:
      Filename    : /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64/bin/jmap
      
      
      
      1:java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7.x86_64 : OpenJDK Development Environment
      Repo        : base
      Matched from:
      Filename    : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/bin/jmap
      
      
      
      1:java-1.8.0-openjdk-devel-debug-1.8.0.65-3.b17.el7.x86_64 : OpenJDK Development Environment with full debug on
      Repo        : base
      Matched from:
      Filename    : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64-debug/bin/jmap
      
      
      
      1:java-1.8.0-openjdk-devel-debug-1.8.0.65-3.b17.el7.x86_64 : OpenJDK Development Environment with full debug on
      Repo        : @base
      Matched from:
      Filename    : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64-debug/bin/jmap
      

      【讨论】:

        【解决方案4】:

        以下内容对我有用:

        sudo apt-get install openjdk-8-jdk openjdk-8-dbg

        【讨论】:

          【解决方案5】:

          我的情况有点奇怪(在openjdk:8-jre Docker 镜像中运行),但这种组合有效

          cat /etc/debian_version # 8.6
          apt install -t jessie-backports openjdk-8-jre-headless ca-certificates-java
          apt-get install -f -y openjdk-8-jdk-headless
          apt-get install -f -y openjdk-8-dbg
          

          【讨论】:

          • 这里的情况相同,您的命令有效。但是我在机器上的任何地方都找不到 jmap,安装后。绝对不在任何安装的 jdk/jre bin 目录中。
          • 如果jmap 命令有效,您可以尝试which jmap 获取二进制文件的路径。
          • 我收到了The value 'jessie-backports' is invalid for APT::Default-Release。我必须将deb http://ftp.debian.org/debian jessie-backports main 添加到/etc/apt/sources.list
          【解决方案6】:

          它不是 JRE 的默认设置——你应该可以使用下面的命令来安装它

          yum install java-1.8.0-openjdk-devel-debug
          

          【讨论】:

            【解决方案7】:

            我发现在我的系统(elasticsearch 容器)上它被排除在外:

            $ grep exclude /etc/yum.conf 
            exclude=java-1.8.0-openjdk*
            

            如果我将其注释掉,那么我可以使用 yum install ... 查看并安装此软件包

            【讨论】:

              【解决方案8】:

              对于 Debian “破坏者” - 10.3 -

              cat /etc/debian_version # 10.3
              
              echo "deb http://ftp.us.debian.org/debian sid main" > /etc/apt/sources.list.d/buster.list
              
              apt-get update && apt-get install -f -y openjdk-8-jdk-headless openjdk-8-dbg
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-04-18
                • 2021-02-10
                • 1970-01-01
                相关资源
                最近更新 更多