Aucun code source n'est disponible pour le type: Erreur de compilation GWT
Je suis en train de faire des demandes par une servlet dans mon application GWT. Sur la compilation le code que j'obtiens ces erreurs.
[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?
Que dois-je faire pour supprimer ces erreurs?
Sont ces classes ne sont pas pris en charge par GWT?
Voici le code, je suis en utilisant
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");
}
Ce code fonctionne très bien Si je l'utiliser sur une habitude de projet java/application console.
source d'informationauteur Saurabh Saxena
Vous devez vous connecter pour publier un commentaire.
Code Java s'exécutant dans GWT est traduit en Javascript, donc certaines classes qui travaillent sur une machine virtuelle java ne fonctionne pas avec GWT. Le HttpClient et les classes associées sont conçus pour fonctionner sur une JVM avec un support complet pour l'ouverture de sockets, quelque chose qui n'est pas autorisé dans un navigateur web, de sorte que ces classes ne peuvent pas être utilisés.
Pour ouvrir une connexion vers le serveur que vous utilisez (sous réserve que le navigateur de la Même Origine), pensez à la RequestBuilder classe, qui vous permet de fournir une url et une méthode HTTP, et éventuellement les en-têtes, des paramètres, des données, etc. Cette classe est une abstraction au-dessus de l'objet XmlHttpRequest en JavaScript, couramment utilisé pour les requêtes AJAX dans la plaine du JS.
Si vous utilisez Maven, vous pouvez le faire.
maven-gwt-plugin avec le paramètre compileSourcesArtifacts fera tout la gestion des sources de travail et vous permettra de compiler module GWT.
Dans le module que vous souhaitez inclure, vous aurez à activer la génération de paquet source. Et de prendre un coup d'oeil à externe module GWT exemple sur Github.
GWT ne peux pas compiler toute classe Java, JavaScript code client. Il prend seulement en charge plusieurs classes de base. Voir GWT JRE Émulation de Référence.
Exemple pom.xml:
Vous avez hériter dans votre *.gwt.xml nécessaires module(s).
Comme:
<inherits name="module_name"/>
Vous ne pouvez pas utiliser les classes qui ne sont pas émulées par GWT dans le côté client code, sauf si vous fournir le code source (ce qui est impossible dans votre cas, que vous êtes en train d'utiliser une 3ème partie de la bibliothèque).
Liste de tous les émulé JRE classes: http://code.google.com/webtoolkit/doc/latest/RefJreEmulation.html
De lire cette documentation complète sur la fabrication de la croix-des demandes de site en GWT: http://code.google.com/webtoolkit/doc/latest/tutorial/Xsite.html
Votre client code source peut se référer à un code source du serveur. Juste essayer de placer votre code source du serveur dans un package partagé.
Quand j'ai "aucun code source n'est disponible..." dans une boîte de dialogue dans Chrome lors du chargement d'une application GWT, ainsi que les réponses ci-dessus, j'ai trouvé 2 autres causes:
Cela signifie que mon serveur de code fait référence à un code qui n'est pas dans la commune ou un paquet de serveur. (Le compilateur ne se plaint pas, mais GWT. Malheureusement, le message d'erreur n'est PAS utile.)
J'ai oublié de fournir un constructeur sans paramètre pour une classe, je suis de passage à partir du serveur vers le client. (I. e. J'ai écrit mon propre constructeur AVEC un paramètre, donc il n'y a pas de constructeur par défaut.) GWT-RPC est la sérialisation de cette classe dans le fond et la désérialisation nécessite un constructeur sans paramètre. Donc, c'est le problème, et encore une fois, le message d'erreur est inutile et trompeuse.
J'ai eu ce problème. Il a été causé par le fait que RemoteService interfaces n'ont pas été inclus dans le "Client" package uniquement dans le package de projet.