Move the 32-bit VM check from HostedModeBase to SwtHostedModeBase so it runs earlier, avoiding a less informative failure mode.. Review by: jat git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.7@6189 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java b/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java index f38d4e1..3d2fc28 100644 --- a/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java +++ b/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java
@@ -29,7 +29,7 @@ // nothing to do } - public static void initHostedMode(boolean is32Bit) { + public static void initHostedMode() { // nothing to do. } }
diff --git a/dev/core/src/com/google/gwt/dev/HostedModeBase.java b/dev/core/src/com/google/gwt/dev/HostedModeBase.java index a361016..060878c 100644 --- a/dev/core/src/com/google/gwt/dev/HostedModeBase.java +++ b/dev/core/src/com/google/gwt/dev/HostedModeBase.java
@@ -343,13 +343,6 @@ } } - /** - * Determine if we're using a 32 bit runtime. - */ - private static boolean is32BitJvm() { - return "32".equals(System.getProperty("sun.arch.data.model")); - } - protected final HostedModeBaseOptions options; /** @@ -366,7 +359,7 @@ public HostedModeBase() { // Set any platform specific system properties. - BootStrapPlatform.initHostedMode(is32BitJvm()); + BootStrapPlatform.initHostedMode(); BootStrapPlatform.applyPlatformHacks(); options = createOptions(); }
diff --git a/dev/core/src/com/google/gwt/dev/SwtHostedModeBase.java b/dev/core/src/com/google/gwt/dev/SwtHostedModeBase.java index a737d3b..f4af2ea 100644 --- a/dev/core/src/com/google/gwt/dev/SwtHostedModeBase.java +++ b/dev/core/src/com/google/gwt/dev/SwtHostedModeBase.java
@@ -73,14 +73,43 @@ } } } - + static { + /* + * The following check must be made before attempting to start SWT, or we'll fail with a + * less-than-helpful UnsatisfiedLinkError. + */ + if (!is32BitJvm()) { + System.err.println("You must use a 32-bit Java runtime to run GWT Hosted Mode."); + if (isMacOsX()) { + // Provide an extra hint for Mac users due to previous GWT incompatibiity with Snow Leopard + System.err.println(" Leopard: Use the Java 1.5 runtime."); + System.err.println(" Snow Leopard: Use the Java 1.6 runtime and add the -d32 flag."); + } + System.exit(1); + } + // Force ToolBase to clinit, which causes SWT stuff to happen. new ToolBase() { }; // Correct menu on Mac OS X Display.setAppName("GWT"); } + + /** + * Determine if we're using a 32 bit runtime. + */ + private static boolean is32BitJvm() { + return "32".equals(System.getProperty("sun.arch.data.model")); + } + + /** + * Determine if we're using Mac OS X. + */ + private static boolean isMacOsX() { + String osName = System.getProperty("os.name").toLowerCase(); + return osName.startsWith("mac os x"); + } private BrowserWidgetHostImpl browserHost = new SwtBrowserWidgetHostImpl();
diff --git a/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java index bf94eec..f3313c4 100644 --- a/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java +++ b/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -36,12 +36,7 @@ * it. If successful, store the loaded path in the property swt.mozilla.path * so SWT's Browser object can use it. */ - public static void initHostedMode(boolean is32Bit) { - if (!is32Bit) { - System.err.println("You must use a 32-bit runtime to run GWT Hosted Mode."); - System.exit(1); - } - + public static void initHostedMode() { String home = System.getenv("HOME"); if (home == null || home.length() == 0) { System.err.println("The HOME environment variable must be defined.");
diff --git a/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java index e9012f5..c0fca46 100644 --- a/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java +++ b/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -64,18 +64,7 @@ Toolkit.getDefaultToolkit(); } - public static void initHostedMode(boolean is32Bit) { - /* - * The following check must be made before attempting to initialize Safari, - * or we'll fail with an less-than-helpful UnsatisfiedLinkError. - */ - if (!is32Bit) { - System.err.println("You must use a 32-bit runtime to run GWT Hosted Mode."); - System.err.println(" Leopard: Use the Java 1.5 runtime."); - System.err.println(" Snow Leopard: Use the Java 1.6 runtime and add -d32"); - System.exit(-1); - } - + public static void initHostedMode() { LowLevelSaf.init(); // Ensure we were started with -XstartOnFirstThread if (!hasStartOnFirstThreadFlag(LowLevelSaf.getProcessArgs())) {
diff --git a/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java index 8734d98..f2a7601 100644 --- a/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java +++ b/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -28,10 +28,6 @@ // nothing to do } - public static void initHostedMode(boolean is32Bit) { - if (!is32Bit) { - System.err.println("You must use a 32-bit runtime to run GWT Hosted Mode."); - System.exit(1); - } + public static void initHostedMode() { } }