SonarQube - 临时目录不可写

时间:2015-03-12 20:44:57

标签: sonarqube sonarqube-5.0

我正在安装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文件夹的权限设置为不是只读,因此Everyone具有完全控制权(不理想,我知道......)

但是,Temp错误会阻止SonarQube启动。

6 个答案:

答案 0 :(得分:32)

这也可以通过将java.io.tmpdir java属性设置为可写目录来解决。 例如,在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

答案 1 :(得分:10)

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

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

我设法通过更改&#39;登录为&#39;来解决上述日志中的问题。对于已安装的服务&#39; NETWORK SERVICE&#39; (没有密码),然后启动该服务。默认情况下,它已将登录设置为本地系统。

另外值得一提的是,如果您第一次设置SonarQube,最好在安装服务之前让网站正常工作,否则调试会有点麻烦。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

set.TMPDIR = C:/ TMP

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

答案 5 :(得分:0)

在Windows(特别是Windows 10)的情况下,删除temp文件夹下的文件(在声纳文件夹下),然后运行 startSonar.bat 。应该可以。