Java Google App Engine et Google Cloud SQL en cours d'exécution sur local serveur de dev
J'ai été à la recherche d'une solution à ce toute la semaine et même s'il y a des solutions à des problèmes similaires il n'en existe aucune rectifier ce problème directement.
J'ai créé un projet d'application web à l'aide de Google App Engine et Google Cloud SQL.
L'exécution de l'application GAE à l'aide de l'éclipse Google plugin et un serveur MySQL local l'application fonctionne très bien.
Lors de l'exécution de l'application à partir de la ligne de commande à l'aide de:-
sudo /opt/appengine-java-sdk-1.6.1/bin/dev_appserver.sh --jvm_flag=-Drdbms.server=local --jvm_flag=-Drdbms.driver=com.mysql.jdbc.Driver --jvm_flag=-Drdbms.url=jdbc:mysql://localhost:3306/twincam?user=root --port=7070 /home/ben/workspace/Twincam/war
Je obtenir les éléments suivants:-
java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.registerDriver(LocalRdbmsServiceLocalDriver.java:95)
J'ai le classpath du référencement de l'mysql-connector.jar situé dans /Twincam/war/WEB-INF/lib/mysql-connector-java-5.1.18-bin.jar référencé par ma bibliothèque utilisateur comme dans l'exemple suivant .classpath fichier et la structure de répertoire :-
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="com.google.appengine.eclipse.core.GAE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="war/WEB-INF/lib/mysql-connector-java-5.1.18-bin.jar"/>
<classpathentry kind="lib" path="war/WEB-INF/lib/gson-2.1-javadoc.jar"/>
<classpathentry kind="lib" path="war/WEB-INF/lib/gson-2.1-sources.jar"/>
<classpathentry kind="lib" path="war/WEB-INF/lib/gson-2.1.jar"/>
<classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>
Mise à jour: j'ai vérifié les autorisations de fichier et tous sont mis à la valeur par défaut 664 donc je suis confiant que ce n'est pas le problème.
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème.
Je l'ai résolu en supprimant la mysql .jar dans appengine-java-sdk-x.x.x/lib/impl.
Matt réponse m'a beaucoup aidé, je crois que c'est une explication plus complète.
Je peux vérifier que vous pouvez obtenir un local instance MYSQL pour fonctionner avec Google App Engine fonctionnant en mode de développement, afin de ne pas encourir la prochaine coûts associés avec le Cloud SQL option de Google, alors en plein développement.
Tout d'abord, comme Matt m'a dit que vous devez mettre le mysql-connector jar dans le APPENGINE_HOME/lib/impl.
Je suis sur windows. Je l'ai fait en premier à trouver d'où mon SDK réside. Dans mon projet dans eclipse dans l'explorateur de packages, je clic droit sur "App Engine SDK[App Engine - 1.6.4]", j'sélectionnez Propriétés dans le menu déroulant, et dans la boîte pop-up cliquez sur le bleu "Configurer le Sdk..." lien.
Cela révèle l'emplacement de mon App Engine SDK. Accédez à ce dossier dans une fenêtre de l'Explorateur Windows, ouvrez le répertoire lib/impl et de les déposer dans votre mysql-connector jar, copiés à partir de votre GAE projet eclipse. Mon chemin a été:
C:\Software\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.6.4.v201203300216r37\appengine-java-sdk-1.6.4\lib\impl
Par les instructions ici (https://developers.google.com/eclipse/docs/cloudsql-createapp) vous êtes censé quitter votre code java de la chaîne de connexion a souligné prod (jdbc:google:sgbdr://... au lieu de jdbc:mysql://...), MAIS vous devez aller dans Eclipse propriétés du projet, Google App Engine, Google Cloud SQL et à la rubrique "Développement de l'instance SQL (utilisé par le développement local, serveur)", sélectionnez le bouton radio "Utiliser instance MySQL". La prochaine fois que vous lancez GAE la chaîne de connexion dans votre code java sera ignorée, au profit de votre hôte MySQL.
Assurez-vous que le service de MySQL est en cours d'exécution et vous êtes bon pour aller.
Ce qui m'a pris plus de temps pour comprendre qu'il devrait avoir. Je pense que la clé est à partir de Google Docs, si vous ne comprenez pas /l'utilisation de cette information, vous allez essayer et utiliser une base de données mysql jdbc de la chaîne et de les exécuter dans la douille de l'autorisation des erreurs parce que GAE ne pouvez pas aller sur le port 3306, à moins que vous ne comme je le décris:
(J'ai téléchargé 4 images pour aider à cette explication, et seulement après j'ai fini, faut-il me dire vous avez besoin de 10 points de réputation pour charger les images--jeesh)
Autant que je sache, Si vous utilisez GAE alors vous ne pouvez pas utiliser un pilote JDBC. Je ne sais pas comment il pourrait travailler dans eclipse alors que Socet classe est limité en FGA.
Vous devez utiliser internes GAE pilote JDBC mysql.
Puis, dans eclipse, vous pouvez configurer la connexion à votre base mysql comme dans exemple
voir aussi ce exemple comment il est configuré
La compilation pure GWT et de le mettre dans Tomcat avec JDBC, devrait fonctionner, mais pas comme une application GAE.
Je viens d'installer Eclipse + GPE4.2 dans une nouvelle machine à l'aide de GAE SDK1.7.5 sur Juno Service Release 1 Build id: 20121004-1855 et a été forcé de copier le pilote JDBC à appengine-java-sdk-x.x.x/lib/impl.
Au début, j'avais oublié à ce sujet et j'ai passé environ 2 jours de débogage mon code.
Ce serait bien si il y avait plus d'informations disponibles sur GPE page de questions. Il serait agréable d'être en mesure de Google plus d'informations.
Bien, après avoir lu tous les écrits pour vous les gars, et la lecture d'une autre des choses que je puisse enfin la liste de mes données à partir d'un tableau de mon Google Cloud SQL exemple avec GAE, je viens de suivre ce raides et Ça marche!!!...
1.- J'ai suivi cet exemple :[À l'aide de Google Cloud SQL avec App Engine SDK Java
mais dans le livre d'or.jsp j'ai ajouté cette ligne:
Puis j'ai changé l'URL de connexion à ce, sans nom d'utilisateur dans mon cas.
aussi je commente cette ligne
2.- Comme décrit ci-dessus, j'ai copié le mysql-connector.jar de le laisser tomber dans appengine-java-sdk-x.x.x/lib/impl.
3.- J'ai configuré le projet, comme il est décrit ici Créer une Nouvelle Application Web avec le Cloud prise en charge SQL
4.- J'ai configuré mon Google instance SQL est décrit ici La Configuration De L'Accès
5.- Enfin, j'ai déployé le projet tel que décrit ici Le Téléchargement De Votre Application
Je peux l'exécuter localement et fonctionne aussi très bien.
Eh bien, je espère que cette aide, thnks!