diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 03aa216b6..8cd1ea707 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -55,19 +55,14 @@ public class Main { * Main method launching the application. */ public static void beginStartup(String[] args) { - boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue(); - if(wasHeadless) { - System.setProperty("java.awt.headless", "false"); - } - boolean headless_check = true; try { - // X permissions error is a java.lang.InternalError (a Throwable) - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - headless_check = ge.isHeadlessInstance(); - } catch (Throwable t) {} - if (wasHeadless) - System.setProperty("java.awt.headless", "true"); - if (headless_check) { + String headless = RouterManager.getRouterContext().getProperty("router.isHeadless"); + boolean isHeadless = Boolean.parseBoolean(headless); + if(isHeadless) { + return; + } + } + catch(Exception e) { return; } try { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index ada49d0aa..9f280ef2a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -1,6 +1,7 @@ package net.i2p.router.web; import java.util.ArrayList; +import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -54,10 +55,51 @@ public class RouterConsoleRunner { private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + "Usage: [[port host[,host]] [-s sslPort [host[,host]]] [webAppsDir]]"; + private static final String PROP_HEADLESS = "router.isHeadless"; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); - System.setProperty("java.awt.headless", "true"); + + //Check if we are in a headless environment, set properties accordingly + List contexts = RouterContext.listContexts(); + if(contexts != null && contexts.size() > 0) { + RouterContext context = contexts.get(0); + String headless = context.getProperty(PROP_HEADLESS); + if(headless == null) { + /* + * Let's check if we are in a headless environment. + * We do this by setting headless to false + * and trying to get the graphics environment. + * If this fails, we should be headless. + */ + System.setProperty("java.awt.headless", "false"); + try { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + ge.isHeadlessInstance(); + context.setProperty(PROP_HEADLESS, "false"); + } + catch(InternalError e) { + context.setProperty(PROP_HEADLESS, "true"); + } + context.router().setConfigSetting(PROP_HEADLESS, context.getProperty(PROP_HEADLESS)); + context.router().saveConfig(); + context.router().shutdown(0); + } + boolean isHeadless = true; + try { + isHeadless = Boolean.parseBoolean(headless); + } + catch(Exception e) { + //Incorrect setting, let's choose headless for safety + isHeadless = true; + } + if(isHeadless) { + System.setProperty("java.awt.headless", "true"); + } + else { + System.setProperty("java.awt.headless", "false"); + } + } } /** diff --git a/build.xml b/build.xml index 20616d1c2..f2413e090 100644 --- a/build.xml +++ b/build.xml @@ -97,6 +97,7 @@ + diff --git a/history.txt b/history.txt index bbdeb990b..a11f78bbd 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2011-02-11 Mathiasdm + * routerconsole: fixed graphs using jrobin; and headless issue + in general: no more switches between headless and non-headless. + 2011-02-10 sponge * I2CP: fix NPE in QueuedClientConnectionRunner diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fecba78d6..a6204817e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 7; + public final static long BUILD = 8; /** for example "-test" */ public final static String EXTRA = "";