2011-12-01 19 views
5

Ho un problema di compilazione strano utilizzando il motore di Google App in java utilizzando eclipse. Quando cerco di GWT compilare il mio codice ottengo un errore che è la seguente:Problemi di compilazione GWT in Java (Google App Engine)

Compiling module beer.SQLBeer 
    Validating newly compiled units 
     Ignored 1 unit with compilation errors in first pass. 
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors. 
    Finding entry point classes 
     [ERROR] Errors in 'file:/C:/Users/Mark/workspace/SQLBeer/src/beer/client/SQLBeer.java' 
     [ERROR] Line 12: The import com.google.appengine.api.rdbms cannot be resolved 
     [ERROR] Line 13: The import com.google.apphosting cannot be resolved 
     [ERROR] Line 14: The import com.google.cloud cannot be resolved 
     [ERROR] Line 18: ServersServlet cannot be resolved to a type 
     [ERROR] Line 22: The method doPost(HttpServletRequest, HttpServletResponse) of type SQLBeer must override or implement a supertype method 
     [ERROR] Line 26: Connection cannot be resolved to a type 
     [ERROR] Line 28: AppEngineDriver cannot be resolved to a type 
     [ERROR] Line 29: Connection cannot be resolved to a type 
     [ERROR] Unable to find type 'beer.client.SQLBeer' 
     [ERROR] Hint: Previous compiler errors may have made this type unavailable 
     [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly 
Exception in thread "UnitWriteThread" 

io non sono sicuro perché non può risolvere le importazioni, e questo mi impedisce di implementare il mio codice sul motore Google. Mi sento perché non sta giocando bene con i miei importazioni la sua lo stesso motivo im ottenere l'errore

[ERROR] Line 22: The method doPost(HttpServletRequest, HttpServletResponse) of type SQLBeer must override or implement a supertype method 

Sono veramente nuovo di utilizzare GWT e Google App Engine per Eclipse, ma nel tentativo di accedere a un database mia squadra creato utilizzando Google Cloud SQL. E mi sento come se mi fossi avvicinato, se potessi venire questi errori.

Il Codice Progetto

package beer.client; 


import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.google.appengine.api.rdbms.AppEngineDriver; 
import com.google.apphosting.utils.servlet.ServersServlet; 
import com.google.cloud.sql.jdbc.Connection; 


@SuppressWarnings("serial") 
public class SQLBeer extends ServersServlet { 


    @Override 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 

     PrintWriter out = resp.getWriter(); 
     Connection c = null; 
     try { 
      DriverManager.registerDriver(new AppEngineDriver()); 
      c = (Connection) DriverManager 
        .getConnection("jdbc:google:rdbms://asu.edu:cst433team1:team1db/mysql"); 
      String fname = req.getParameter("fname"); 
      String content = req.getParameter("content"); 

      /** 
      * This code appears to do the web form fun 
      */ 
//   if (fname == "" || content == "") { 
//    out.println("<html><head></head><body>You are missing either a message or a name! Try again! Redirecting in 3 seconds...</body></html>"); 
//   } else { 
//    String statement = "INSERT INTO entries (guestName, content) VALUES(? , ?)"; 
//    PreparedStatement stmt = c.prepareStatement(statement); 
//    stmt.setString(1, fname); 
//    stmt.setString(2, content); 
//    int success = 2; 
//    success = stmt.executeUpdate(); 
//    if (success == 1) { 
//     out.println("<html><head></head><body>Success! Redirecting in 3 seconds...</body></html>"); 
//    } else if (success == 0) { 
//     out.println("<html><head></head><body>Failure! Please try again! Redirecting in 3 seconds...</body></html>"); 
//    } 
//   } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } finally { 
      if (c != null) 
       try { 
        c.close(); 
       } catch (SQLException ignore) { 
       } 
     } 
     //resp.setHeader("Refresh", "3; url=/beer.jsp"); 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

    } 

} 

Qualsiasi suggerimento su cosa avrei potuto fare per correggere questi errori? Ho provato diverse importazioni, ma sembrano tutte portare gli stessi problemi nel compilatore GWT.

EDIT: ho cambiato la misura in HttpServlet e ora l'errore è un po 'diverso

Compiling module beer.SQLBeer 
    Validating newly compiled units 
     Ignored 1 unit with compilation errors in first pass. 
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors. 
    Finding entry point classes 
     [ERROR] Errors in 'file:/C:/Users/Mark/workspace/SQLBeer/src/beer/client/SQLBeer.java' 
     [ERROR] Line 13: The import com.google.appengine.api.rdbms cannot be resolved 
     [ERROR] Line 14: The import com.google.cloud cannot be resolved 
     [ERROR] Line 26: Connection cannot be resolved to a type 
     [ERROR] Line 28: AppEngineDriver cannot be resolved to a type 
     [ERROR] Line 29: Connection cannot be resolved to a type 
     [ERROR] Unable to find type 'beer.client.SQLBeer' 
     [ERROR] Hint: Previous compiler errors may have made this type unavailable 
     [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly 
Exception in thread "UnitWriteThread" java.lang.RuntimeException: Unable to read from byte cache 

risposta

5

In primo luogo, verificare che questo non è un problema di percorso di classe - il che significa non hanno tutti i barattoli richiesti la directory lib e il classpath.

Se ciò non riesce, assicurarsi che questo codice non sia lato client (indovinando dal nome del pacchetto), che verrà compilato in javascript. Non vuoi che questo accada per il codice di connessione al database, quindi dovresti usare questo codice sul lato server.

Vedere la documentazione su Client side & Server side codice.

+0

Capisco! Stavo creando codice di tipo server per tutto il tempo e pensavo che fosse basato sul client. Non puoi dire ad un principiante? :) Ora devo solo capire i miei problemi con JSP e domande ... Grazie! – meriley

+1

Nessun problema. Continua a sperimentare e continua ad imparare. Quando sei bloccato, basta chiedere! Questo è il modo di SO! – gotomanners