2013-01-21 73 views
0

我現在有一個乾淨的編譯我的代碼,並使用WAMPServer。然而,當我嘗試從Eclipse運行我的代碼(運行方式,GWT aplication)我在控制檯中出現以下錯誤:Eclipse GWT java.lang.NullPointerException

java.lang.NullPointerException 
at com.google.gwt.dev.DevMode.validateServletTags(DevMode.java:611) 
at com.google.gwt.dev.DevMode.doStartup(DevMode.java:449) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1083) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:836) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 

這是第一行相關的代碼(我沒有將剩下的爲簡便起見,請讓我知道,如果你需要的話):

"DevMode.java:611" 

TreeLogger servletLogger = 
    logger.branch(TreeLogger.DEBUG, "Validating <servlet> tags for module '" + module.getName() 
     + "'", null, new InstalledHelpInfo("servletMappings.html")); 
for (String servletPath : servletPaths) { 
    String servletClass = module.findServletForPath(servletPath); 
    assert (servletClass != null); 
    // Prefix module name to convert module mapping to global mapping. 
    servletPath = "/" + module.getName() + servletPath; 
    if (servletValidator == null) { 
    servletWriter.addMapping(servletClass, servletPath); 
    } else { 
    servletValidator.validate(servletLogger, servletClass, servletPath); 
    } 

這是我

AwardTracker.get.xml 

<module> 
<inherits name="com.google.gwt.user.User"/> 
<inherits name="com.google.gwt.user.theme.standard.Standard"/> 
<entry-point class="org.AwardTracker.client.AwardTracker"/> 

<!-- servelet context - path is arbitrary, but must match up with the rpc init inside java class --> 
<!-- Tomcat will listen for this from the server and waits for rpc request in this context --> 
<servlet class="org.AwardTracker.server.MySQLConnection" path="/MySQLConnection" /> 
    <inherits name="com.google.gwt.user.theme.standard.Standard"/> 
    <inherits name="com.google.gwt.user.theme.chrome.Chrome"/> 
    <inherits name="com.google.gwt.user.theme.dark.Dark"/> 
</module> 

這是我

web.xml 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app> 

<!-- Default page to serve --> 
<welcome-file-list> 
    <welcome-file>AwardTracker.html</welcome-file> 
</welcome-file-list> 

</web-app> 

<servlet> 
    <servlet-name>mySQLConnection</servlet-name> 
    <servlet-class>org.AwardTracker.server.MySQLConnection</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mySQLConnection</servlet-name> 
    <url-pattern>/org.AwardTracker.AwardTracker/MySQLConnection</url-pattern> 
</servlet-mapping> 

任何幫助將不勝感激。

問候,

格林

的答案是:

web.xml中不正確的順序。它應該是:

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app> 

<servlet> 
    <servlet-name>mySQLConnection</servlet-name> 
    <servlet-class>org.AwardTracker.server.MySQLConnection</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mySQLConnection</servlet-name> 
    <url-pattern>/org.AwardTracker.AwardTracker/MySQLConnection</url-pattern> 
</servlet-mapping> 

<!-- Default page to serve --> 
<welcome-file-list> 
    <welcome-file>AwardTracker.html</welcome-file> 
</welcome-file-list>  

</web-app> 

謝謝

格林

+0

請提及GWT版本以及您是否使用帶外部服務器配置的gwt(您沒有使用jetty,eh?) – SSR

+0

我正在使用幾周前通過Eclipse更新管理器安裝的Eclipse Juno GWT插件,所以它應該是最新的。我不使用碼頭。我是新手,並且一直在使用示例來配置和編碼到這一點,所以我不確定我是否使用外部服務器配置。我怎麼告訴你? – Glyn

+0

答案是WEB.xml的順序不正確。請參閱上面的正確的WEB.xml。謝謝,格林。 – Glyn

回答

0

請到 「validateServletTags(DevMode.java:611)」,並檢查線路。嘗試打印所有變量。那應該告訴你哪個是空的。

+0

該行是:if(servletValidator == null){ servletWriter.addMapping(servletClass,servletPath);此致Glyn – Glyn

+0

嘗試打印servletWriter servletClass和servletPath。在3個系統輸出語句中。在條件 – user1292276

+0

之前,我無法編輯DevMode.class;它不會允許任何更改。如果我錯過了某些明顯的事情,我很抱歉,我很抱歉。問候,格林 – Glyn