diff --git a/core/java/src/net/i2p/util/WorkingDir.java b/core/java/src/net/i2p/util/WorkingDir.java
index a003d2b29e7a5b36e2bb0acddfc7fd9c70c37cf3..ef037a6448065eca2b0ce41e3244de7d2e32f77d 100644
--- a/core/java/src/net/i2p/util/WorkingDir.java
+++ b/core/java/src/net/i2p/util/WorkingDir.java
@@ -52,8 +52,12 @@ public class WorkingDir {
      * Only call this once on router invocation.
      * Caller should store the return value for future reference.
      */
-    public static String getWorkingDir(boolean migrateOldConfig) {
-        String dir = System.getProperty(PROP_WORKING_DIR);
+    public static String getWorkingDir(Properties envProps, boolean migrateOldConfig) {
+        String dir = null;
+        if (envProps != null)
+            dir = envProps.getProperty(PROP_WORKING_DIR);
+        if (dir == null)
+            dir = System.getProperty(PROP_WORKING_DIR);
         boolean isWindows = System.getProperty("os.name").startsWith("Win");
         File dirf = null;
         if (dir != null) {
@@ -69,10 +73,16 @@ public class WorkingDir {
                 dirf = new File(home, WORKING_DIR_DEFAULT);
             }
         }
+
         // where we are now
-        String cwd = System.getProperty(PROP_BASE_DIR);
-        if (cwd == null)
-            cwd = System.getProperty("user.dir");
+        String cwd = null;
+        if (envProps != null)
+            cwd = envProps.getProperty(PROP_BASE_DIR);
+        if (cwd == null) {
+            cwd = System.getProperty(PROP_BASE_DIR);
+            if (cwd == null)
+                cwd = System.getProperty("user.dir");
+        }
 
         // Check for a hosts.txt file, if it exists then I2P is there
         File oldDirf = new File(cwd);
diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 34e8f40dbfef2473f9cc7b7a7a6d359731263ce7..118d903b9d9867c87101a7266b74425f131ce3f7 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -137,7 +137,7 @@ public class Router {
         // Do we copy all the data files to the new directory? default false
         String migrate = System.getProperty("i2p.dir.migrate");
         boolean migrateFiles = Boolean.valueOf(migrate).booleanValue();
-        String userDir = WorkingDir.getWorkingDir(migrateFiles);
+        String userDir = WorkingDir.getWorkingDir(envProps, migrateFiles);
 
         // Use the router.config file specified in the router.configLocation property
         // (default "router.config"),