Fix bug when JAR file is stored in path with non-US-ASCII characters
[jSite.git] / src / main / java / de / todesbaum / jsite / main / ConfigurationLocator.java
index 7d0a83b..2b19f3e 100644 (file)
@@ -21,6 +21,7 @@ package de.todesbaum.jsite.main;
 import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Locator for configuration files in different places.
@@ -61,13 +62,11 @@ public class ConfigurationLocator {
         * list, {@link ConfigurationLocation#CUSTOM} has to be enabled by calling
         * {@link #setCustomLocation(String)}.
         */
-       public ConfigurationLocator() {
+       public ConfigurationLocator(JarFileLocator jarFileLocator) {
                /* are we executed from a JAR file? */
-               String resource = getClass().getResource("/" + getClass().getName().replace(".", "/") + ".class").toString();
-               if (resource.startsWith("jar:")) {
-                       String jarFileLocation = resource.substring(9, resource.indexOf(".jar!") + 4);
-                       String jarFileDirectory = new File(jarFileLocation).getParent();
-                       File configurationFile = new File(jarFileDirectory, "jSite.conf");
+               Optional<File> jarFile = jarFileLocator.locateJarFile();
+               if (jarFile.isPresent()) {
+                       File configurationFile = new File(jarFile.get().getParent(), "jSite.conf");
                        configurationFiles.put(ConfigurationLocation.NEXT_TO_JAR_FILE, configurationFile.getPath());
                }
                File homeDirectoryFile = new File(System.getProperty("user.home"), ".jSite/config7");