11

我正在安装 SonarQube v5.0.1。

我正在运行 Windows Server 2012 64 位、Java 1.8 64 位和 SonarQube windows-x86-64 包装器。

SonarQube 不断抛出以下错误:

WrapperSimpleApp: Encountered an error running main: java.lang.IllegalStateException: Temp directory is not writable: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\
java.lang.IllegalStateException: Temp directory is not writable: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\
    at org.sonar.process.MinimumViableSystem.checkWritableDir(MinimumViableSystem.java:60)
    at org.sonar.process.MinimumViableSystem.checkWritableTempDir(MinimumViableSystem.java:52)
    at org.sonar.process.MinimumViableSystem.check(MinimumViableSystem.java:45)
    at org.sonar.application.App.main(App.java:113)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createTempFile(Unknown Source)
    at org.sonar.process.MinimumViableSystem.checkWritableDir(MinimumViableSystem.java:57)
    ... 9 more
<-- Wrapper Stopped

为什么 SonarQube 一直尝试写入 C:\Windows\System32\config\systemprofile\AppData\Local 而不是 C:\Windows\SysWOW64\config\systemprofile\AppData\Local?

为了摆脱以前安装中的这个错误,我不得不在 C:\Windows\System32\config\systemprofile\AppData\Local 中创建一个 Temp 文件夹,并使用读/写设置和/或权限来让 SonarQube 停止抱怨。

更新:这是一个大问题,因为我无法将 SonarQube 作为 Windows 服务启动。奇怪的是,我已经安装了 SonarQube 并作为 Windows 服务运行。今天,我停止了服务,现在我无法再启动服务了。我已将 Temp 文件夹的权限设置为非只读,因此每个人都拥有完全控制权(不理想,我知道......)

尽管如此,Temp 错误仍会阻止 SonarQube 启动。

4

6 回答 6

33

这也可以通过将java.io.tmpdirjava 属性设置为可写目录来解决。例如,在conf/wrapper.conf变化中

wrapper.java.additional.1=-Djava.awt.headless=true

wrapper.java.additional.1=-Djava.awt.headless=true -Djava.io.tmpdir=E:/sonarqube-5.1/temp
于 2015-05-11T01:47:30.673 回答
10

安装后尝试启动服务时,我的声纳日志中出现了同样的错误。

我已经正确设置了 JAVA_HOME 和 x64。

我设法通过将已安装服务的“登录身份”更改为“网络服务”(无密码)来解决上述日志中的问题,然后启动该服务。默认情况下,它已将登录方式设置为本地系统。

可能值得一提的另一件事是,如果您是第一次设置 SonarQube,最好在安装服务之前让网站正常运行,否则调试会有点痛苦。

于 2015-04-17T02:35:31.590 回答
1

与上一条消息SonarQube - Unable to load the Wrapper's native library 'wrapper.dll'相同:您能否验证您是否安装了 Java 64 位,因为它看起来是 32 位版本。

于 2015-03-13T08:37:09.093 回答
0

今天我在使用 sonarqube 5.6 和 Windows Server 2008 R2 时遇到了同样的问题。以上没有对我有用,但解决问题的是定义一个系统变量 TMPDIR指向另一个临时目录,例如 C:\TMP

于 2016-06-21T16:20:56.067 回答
0

运行一些声纳分析时,我遇到了同样的错误。原来,在 wrapper.conf 我必须添加

设置.TMPDIR=c:/tmp

带有现有 tmp 目录的路径,当然需要重新安装服务(UninstallNTService.bat / InstallNTService.bat)

于 2016-07-10T18:09:10.433 回答
0

如果是 Windows(特别是 Windows 10),请删除 temp 文件夹 [sonar 文件夹下] 下的文件并运行startSonar.bat。它应该工作。

于 2019-09-10T09:26:06.490 回答