2010-07-27 32 views
-7

在GWT程序異常的GWT程序

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 [email protected] 
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 
+2

不知怎的,我認爲你需要提供更多的信息。您能否爲發生異常的初始程序提供堆棧跟蹤和代碼? – Mark 2010-07-27 11:19:41

+2

你是否期望這裏的任何人都能成爲某種可以猜測你程序確切條件的魔術師?你有沒有讀過ExceptionInInitializeError的API?如果不是,那麼請這樣做。如果你這樣做了,那你到底明白了什麼? – perdian 2010-07-27 13:34:41

+0

[關於GWT,Cookies和網頁指導的問題]的可能重複(http://stackoverflow.com/questions/2974100/question-on-gwt-cookies-and-webpage-directing) – 2011-10-17 06:10:41

回答

0

您沒有提供充分的資料,如堆棧跟蹤和代碼的異常。但是,我可以告訴的是,當靜態初始化代碼拋出運行時異常時,會發生ExceptionInInitializerError。請注意,該異常包裝觸發運行時異常,因此請嘗試查看完整的堆棧跟蹤並分析它。

下面是一個例子:

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

    public static void main(String[] args) { 

    } 
} 

堆棧跟蹤打印輸出:

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" 

- 編輯 -

現在您提供更多的細節,看看在另一個更特定於您的案例的回覆中:您或者已經運行了另一個GWT應用程序會話寧,或者您有本地主機上其他一些服務器應用程序,監聽端口8888

3

你有另一個會話活躍,堆棧跟蹤是很明顯的:

[錯誤]無法綁定端口9997插座 - 是另一場活動

java.net.BindException:在java.net.PlainSocketImpl.socketBind(本機方法)地址已在使用

端口127.0.0.1:8888爲時已使用; 您可能還有另一個會話激活

0

This線程可能對您有幫助。

報價從該線程頂端回答:

「已經退出所有瀏覽器連接即使之後,代碼服務器仍在運行 等待新的連接,你需要停止從以前的 發射前該連接另外,請注意,您不一定必須 重新啓動 - 只需進行更改並刷新瀏覽器或啓動新的瀏覽器即可。「

根據我個人的經驗,嘗試1分鐘左右後啓動webapp。這個問題會消失。 不是一個乾淨的方式去做東西,所以這個案例有一個GWT團隊提交的bug。