tags:

views:

70

answers:

2

an exception in gwt program

java.lang.ExceptionInInitializerError

[ERROR] Unable to bind socket on port 9997 -- is another session active?
java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
    at java.net.ServerSocket.bind(ServerSocket.java:319)
    at java.net.ServerSocket.bind(ServerSocket.java:277)
    at com.google.gwt.dev.shell.BrowserListener.<init>(BrowserListener.java:67)
    at com.google.gwt.dev.DevModeBase.ensureCodeServerListener(DevModeBase.java:898)
    at com.google.gwt.dev.DevModeBase.doStartup(DevModeBase.java:888)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1030)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783)
    at com.google.gwt.dev.DevMode.main(DevMode.java:275)
log4j:WARN No appenders could be found for logger (org.apache.jasper.compiler.JspRuntimeContext).
log4j:WARN Please initialize the log4j system properly.
Starting Jetty on port 8888
   [WARN] failed [email protected]:8888
java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
    at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:205)
    at org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:304)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.Server.doStart(Server.java:233)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:543)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:421)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1035)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783)
    at com.google.gwt.dev.DevMode.main(DevMode.java:275)
   [WARN] failed Server@69d02b
java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
    at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:205)
    at org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:304)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.Server.doStart(Server.java:233)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:543)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:421)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1035)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783)
    at com.google.gwt.dev.DevMode.main(DevMode.java:275)
Port 127.0.0.1:8888 is already is use; you probably still have another session active
+1  A: 

You haven't provided enough information, such as the stack trace and the code. However, what I can tell is that ExceptionInInitializerError occurs when a static initialization code throws a runtime exception. Note that the exception wraps the triggering runtime exception, so try to view the complete stack trace and analyze it.

Here is an example:

public class Test {
    static {
        String s = "hi";
        s.substring(10);
    }

    public static void main(String[] args) {

    }
}

The stack trace printout is:

java.lang.ExceptionInInitializerError
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -8
    at java.lang.String.substring(String.java:1938)
    at java.lang.String.substring(String.java:1905)
    at Test.<clinit>(Test.java:5)
Exception in thread "main" 

--EDIT--

now that you provided more details, take a look at the other response which is more specific to your case: you either have another session of your GWT application already running, or you have some other server application on the localhost, listening on port 8888.

Eyal Schneider
+2  A: 

You have another session active, the stack trace is pretty obvious:

[ERROR] Unable to bind socket on port 9997 -- is another session active?

java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method)

Port 127.0.0.1:8888 is already is use; you probably still have another session active

Robert Munteanu