diff --git a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java index c0eb8613e6..e05107a674 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java +++ b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java @@ -198,14 +198,15 @@ public static File getExtractionFolder() { setExtractionFolderToUserCache(); } else { try { - File jmeTempDir = new File(userTempDir, "jme3"); - if (!jmeTempDir.exists()) { - jmeTempDir.mkdir(); - } - extractionFolder = new File(jmeTempDir, "natives_" + Integer.toHexString(computeNativesHash())); + extractionFolder = new File(userTempDir, "jme3_natives_" + Integer.toHexString(computeNativesHash())); if (!extractionFolder.exists()) { - extractionFolder.mkdir(); + if(!extractionFolder.mkdir()) { + throw new IOException("Failed to create folder "+extractionFolder); + } + } + if(!extractionFolder.canWrite()) { + setExtractionFolderToUserCache(); } } catch (Exception e) { setExtractionFolderToUserCache(); @@ -268,7 +269,7 @@ private static void setExtractionFolderToUserCache() { extractionFolder.mkdir(); } - logger.log(Level.WARNING, "Working directory is not writable. " + logger.log(Level.WARNING, "Temp directory is not writable. " + "Natives will be extracted to:\n{0}", extractionFolder); }