系統:Ubuntu 16.04 LTS
環境:vscode+java extension pack打開了一個gradle的java項目;另外,用一個terminal啟動了groovysh
報錯:
groovysh報錯 java.util.prefs.FileSystemPreferences syncWorld
警告: Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
參考資料[1]:https://stackoverflow.com/questions/2027566/java-util-prefs-throwing-backingstoreexception-why
解決:
根據[1]中“If two JVMs attempt to lock the file at the same then this is what you'll see.”
打開任務管理器,看到兩個java進程,一個是vscode java extension 運行的 eclipse jdt 所啟動的jvm(jvm1),另一個是groovysh所啟動的jvm(jvm2)
所以,是因為jvm1進程已經獲取lock了,導致jvm2無法獲取lock而報錯
關閉vscode的java項目之后,groovysh不再報錯