java - studio - No hay ningún código fuente disponible para tipo: GWT Compilation Error
no source available visual studio 2010 (6)
Tienes que heredar en tu * .gwt.xml módulo (s) necesario (s).
Me gusta: <inherits name="module_name"/>
Estoy intentando hacer solicitudes de get por un servlet en mi aplicación GWT. Al compilar el código, recibo estos errores.
[ERROR] Line 16: No source code is available for type org.apache.http.client.ClientProtocolException; did you forget to inherit a required module?
[ERROR] Line 16: No source code is available for type org.apache.http.ParseException; did you forget to inherit a required module?
[ERROR] Line 16: No source code is available for type org.json.simple.parser.ParseException; did you forget to inherit a required module?
¿Qué debo hacer para eliminar estos errores? ¿Estas clases no son compatibles con GWT?
A continuación está el código que estoy usando
public String getJSON() throws ClientProtocolException, IOException, ParseException{
HttpClient httpclient = new DefaultHttpClient();
JSONParser parser = new JSONParser();
String url = "some - url - can''t disclose";
HttpResponse response = httpclient.execute(new HttpGet(url));
JSONObject json_data = (JSONObject)parser.parse(EntityUtils.toString(response.getEntity()));
JSONArray results = (JSONArray)json_data.get("result");
}
Este código funciona bien si lo uso en una aplicación de proyecto / consola java habitual.
El código Java que se ejecuta en GWT se traduce a Javascript, por lo que algunas clases que funcionan en una JVM no funcionarán con GWT. El HttpClient y las clases relacionadas se escriben para trabajar en una JVM con soporte completo para abrir sockets, algo que no está permitido en un navegador web, por lo que estas clases no se pueden usar.
Para abrir una conexión al servidor que está utilizando (sujeto a la Política de Same Origin del navegador), considere la clase RequestBuilder, que le permite proporcionar una url y un método HTTP, y opcionalmente encabezados, parámetros, datos, etc. Esta clase es una abstracción sobre el objeto XmlHttpRequest en JavaScript, comúnmente utilizado para solicitudes AJAX en JS simple.
No puede usar clases que no sean emuladas por GWT en el código del lado del cliente a menos que proporcione el código fuente (imposible en su caso ya que está tratando de usar una biblioteca de terceros).
Lista de todas las clases de JRE emuladas: http://code.google.com/webtoolkit/doc/latest/RefJreEmulation.html
Lea esta documentación completa sobre cómo realizar solicitudes entre sitios en GWT: http://code.google.com/webtoolkit/doc/latest/tutorial/Xsite.html
Si usas Maven entonces puedes hacer esto.
maven-gwt-plugin con el parámetro compileSourcesArtifacts hará todo el trabajo de gestión de orígenes y le permitirá compilar el módulo GWT.
En el módulo que desea incluir, deberá habilitar la generación del paquete fuente . Y eche un vistazo al ejemplo del módulo GWT externo en Github .
GWT no puede compilar ningún código de cliente de clase Java a JavaScript. Solo admite varias clases base. Consulte la referencia de emulación de GWT JRE .
Ejemplo pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<dependencies>
<dependency>
<groupId>com.my.group</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<!-- ... -->
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.0</version>
<!-- ... -->
<configuration>
<compileSourcesArtifacts>
<compileSourcesArtifact>com.my.group:my-artifact</compileSourcesArtifact>
</compileSourcesArtifacts>
</configuration>
</plugin>
</plugins>
</build>
</project>
Cuando obtengo "no hay código fuente disponible ..." en un cuadro de diálogo en Chrome mientras cargaba una aplicación GWT, junto con las respuestas anteriores encontré otras 2 causas:
Significa que mi código de servidor se refiere a código que no está en los paquetes compartidos o de servidor. (El compilador no se queja, pero GWT sí. Desafortunadamente, el mensaje de error NO es útil).
Olvidé proporcionar un constructor sin parámetros para una clase que paso de cliente a servidor. (Es decir, escribí mi propio constructor CON un parámetro, por lo que no hay un constructor predeterminado.) GWT-RPC está serializando esta clase en segundo plano y la deserialización requiere un constructor sin parámetros. Entonces ese es el problema, y de nuevo, el mensaje de error no ayuda y es engañoso.
El código fuente de su cliente puede referirse a un código fuente de servidor. Intenta colocar el código fuente de tu servidor en un paquete compartido.