【问题标题】:SonarQube - Unable to load the Wrapper's native library 'wrapper.dll'SonarQube - 无法加载 Wrapper 的本机库“wrapper.dll”
【发布时间】:2018-08-31 01:57:41
【问题描述】:

我正在安装 SonarQube v5.0。

我正在运行 Windows Server 2012 64 位(虚拟操作系统)、Java 1.8 64 位和 SonarQube windows-x86-64 包装器。

SonarQube,无论是通过 StartSonar.bat 以管理员身份使用命令提示符还是作为 Windows 服务运行,都会不断抛出以下警告:

WARNING - Unable to load the Wrapper's native library 'wrapper.dll'.
      The file is located on the path at the following location but
      could not be loaded:
        C:\sonarqube-5.0.1\bin\windows-x86-64\.\lib\wrapper.dll
      Please verify that the file is readable by the current user
      and that the file has not been corrupted in any way.
      One common cause of this problem is running a 32-bit version
      of the Wrapper with a 64-bit version of Java, or vica versa.
      This is a 32-bit JVM.
      Reported cause:
        C:\sonarqube-5.0.1\bin\windows-x86-64\lib\wrapper.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
      System signals will not be handled correctly.

我在网上找到的唯一信息是 2010 年以来的一些 JIRA,它们并没有真正帮助我。我无法在此 Windows 安装上创建声纳用户。我的 CI 环境中的所有其他工具都在 Java 1.8 64 位上运行,这意味着 JAVA_HOME 设置为 JDK 1.8 64 位。我真的不想运行 Java 32 位和 32 位 Wrapper。这意味着 wrapper.conf 顶部的 JRE bin/java 路径必须指定 32 位 JRE。

我能做些什么来消除这个警告?

【问题讨论】:

    标签: sonarqube sonarqube-5.0


    【解决方案1】:

    并非所有应用程序都使用 JAVA_HOME 变量,因此当您使用 32 位时,您可以让 JAVA_HOME 指向您的 64 位版本。 注意:注册表中的“Java_Home”键不是 JAVA_HOME 变量。

    嗯,可以确定的一种方法是使用 ..\windows-x86-64\UninstallNTService.bat 卸载当前服务,然后使用 ..\windows-x86-32\InstallNTService.bat 安装 32 位版本。

    如果它有效,那么您肯定拥有一个 32 位 JVM。

    【讨论】:

    • 我在注册表的几个地方找到了JavaHome。在注册表的一个特定部分,HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> JavaSoft,我发现一些 JavaHome 键指向 32 位 Java 1.8 的路径。我没有明确安装那个 JVM,但我怀疑为 Firefox 安装了 Java,因为那个浏览器是 32 位的。
    • 我尝试了您的建议,并且能够安装 32 位服务。但是,我遇到了我在 SO(无法写入 Temp)文件夹上发布的另一个问题)。因此,我卸载了 32 位包装器,卸载了 32 位 JRE,并安装了 SonarQube 64 位包装器。这解决了 .dll 错误消息和 Temp 文件夹错误消息。谢谢!
    • 不要忘记添加 %JAVA_HOME%/bin 作为 Windows PATH 变量中的第一个路径元素。这将在声纳启动时关闭任何有问题的 32 位路径。
    【解决方案2】:

    在 \sonarqube-5.1.2\bin\windows-x86-64 中安装了服务 SonarQube。

    我刚刚在Windows服务中进入SonarQube——>进入属性——>登录选项卡——>选择“本地服务”(输入系统密码)。就是这样!

    问题已解决。

    希望这对无法从上述帖子中解决的人有所帮助。

    【讨论】:

    • 这可能对某些人有用,但有些人可能没有系统密码。
    • 是的,我的电脑没有系统密码或管理员权限。
    【解决方案3】:

    我在 Windows 7 上使用 SonarQube 5.6.4 时遇到了同样的问题。编辑 sonar.properties 文件以添加 wrapper.java.command=... 没有效果。不过,编辑我的路径语句就可以解决问题。

    我的路径语句中的前两个文件夹是

    C:\ProgramData\Oracle\Java\javapath;C:\dev\sdks\jdk1.8.0_112\bin;....
    

    第一个 (C:\ProgramData\Oracle\Java\javapath) 中的 java.exe 是 32 位的。我只是在我的路径中切换了两者:

    C:\dev\sdks\jdk1.8.0_112\bin;C:\ProgramData\Oracle\Java\javapath;...
    

    SonarQube 突然使用 C:\dev\sdks\jdk1.8.0_112\bin 中的 64 位 java.exe 启动

    进行此更改后,我能够毫无困难地重新启动 Firefox。

    【讨论】:

      【解决方案4】:

      就我而言,在窗口 7 或窗口 10 上的 SonarQube 7.3 上运行,我必须将 Java 版本更新为 java 8 才能传递此错误。

      【讨论】:

        猜你喜欢
        • 2014-05-06
        • 1970-01-01
        • 2013-01-24
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        • 2017-05-20
        • 1970-01-01
        相关资源
        最近更新 更多