19

私はこの 1 週間ずっとこの問題の解決策を研究してきましたが、同様の問題に対する解決策はありますが、この問題に直接対処して修正するものはありません。

Google App Engine と Google Cloud SQL を使用して Web アプリケーション プロジェクトを作成しました。Eclipse Google プラグインとローカル MySQL サーバーを使用して GAE アプリケーションを実行すると、アプリケーションはうまく機能します。

以下を使用してコマンドラインからアプリケーションを実行する場合:-

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

私は以下を取得します:-

java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.registerDriver(LocalRdbmsServiceLocalDriver.java:95)

次の .classpath ファイルのように、ユーザー ライブラリによって参照される /Twincam/war/WEB-INF/lib/mysql-connector-java-5.1.18-bin.jar にある mysql-connector.jar を参照するクラスパスがあります。ディレクトリ構造:-

   <?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>

ここに画像の説明を入力

更新: ファイルのアクセス許可を確認したところ、すべてがデフォルトの 664 に設定されているため、これは問題ではないと確信しています。

4

5 に答える 5

36

私も同じ問題を抱えていました。

appengine-java-sdk-xxx/lib/impl に mysql .jar をドロップして解決しました。

于 2012-02-28T14:12:29.487 に答える
9

マットの答えは私を大いに助けてくれました。これはより完全な説明だと思います。

ローカル MYSQL インスタンスを開発モードで実行されている Google App Engine で動作させることができることを確認できます。これにより、開発中に Google からの Cloud SQL オプションに関連する今後のコストが発生しなくなります。

まず、Matt が言ったように、mysql-connector jar を APPENGINE_HOME/lib/impl に配置する必要があります。

私は窓にいます。これを行うには、最初に SDK が存在する場所を見つけました。パッケージ エクスプローラーの Eclipse のプロジェクトで、[App Engine SDK [App Engine - 1.6.4]] を右クリックし、ドロップダウン メニューから [プロパティ] を選択し、表示されるポップアップで青色の [Configure SDKs...] をクリックします。 " リンク。

これにより、App Engine SDK の場所が明らかになります。Windows エクスプローラー ウィンドウでそのフォルダーに移動し、lib/impl を開き、GAE Eclipse プロジェクトからコピーした mysql-connector jar をドロップします。私のパスは次のとおりです。

C:\Software\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.6.4.v201203300216r37\appengine-java-sdk-1.6.4\lib\impl

こちらの手順 (https://developers.google.com/eclipse/docs/cloudsql-createapp) に従って、Java コードの接続文字列を prod (jdbc:google:rdbms://... の代わりに指す) のままにしておく必要があります。 jdbc:mysql://...) ただし、Eclipse プロジェクトのプロパティ、Google、App Engine、Google Cloud SQL に移動し、[開発 SQL インスタンス (ローカル開発サーバーで使用)] の下のラジオ ボタン [MySQL インスタンスを使用] を選択する必要があります。 "。次に GAE を起動すると、Java コードの接続文字列は無視され、ローカルの MySQL ホストが優先されます。

MySQL サービスが実行されていることを確認してください。

これを理解するのに、必要以上に時間がかかりました。キーはGoogle Docsからのものだと思います。この情報を理解していない/使用していない場合は、mysql jdbc文字列を使用してソケット許可エラーに遭遇します. :

コード内で開発 SQL インスタンスに明示的に接続する必要はありません。これは、開発サーバーでアプリケーションを実行するときに自動的に行われます。接続先の開発用 SQL インスタンスは、実行時に GPE によって VM 引数を介して開発用サーバーに自動的に渡されます。

(この説明を助けるために 4 つの画像をアップロードしましたが、終了した後で初めて、画像を読み込むには 10 の評判ポイントが必要であることがわかります。

于 2012-05-19T16:21:31.013 に答える
2

私の知る限り、GAEを使用している場合、JDBCドライバーは使用できません。SocetクラスがGAEで制限されている間、Eclipseでどのように機能するかわかりません。mysql JDBC の代わりに内部 GAE ドライバーを使用する必要があります。

com.google.appengine.api.rdbms.AppEngineDriver

次に、eclipse で例のようにローカル mysql db への接続を構成する場合があります。構成方法の参照 してください。

純粋な GWT としてコンパイルし、それを JDBC を使用して Tomcat に入れると機能するはずですが、GAE アプリケーションとしては機能しません。

于 2012-01-22T23:46:39.357 に答える
1

Juno Service Release 1 ビルド ID: 20121004-1855 で GAE SDK1.7.5 を使用して新しいマシンに Eclipse + GPE4.2 をインストールしたところ、appengine-java-sdk-xxx/lib/impl で JDBC ドライバーをコピーする必要がありました。最初はこれを忘れていたので、コードのデバッグに約 2 日を費やしました。

GPE ページの問題について、より多くの情報が入手できれば幸いです。より多くの情報をGoogleで検索できるとよいでしょう。

于 2013-02-25T17:27:56.247 に答える
0

さて、皆さんのために書かれたすべてを読み、別のものを読んだ後、GAE を使用して Google SQL Cloud インスタンスのテーブルからデータを一覧表示できるようになりました。この手順に従うだけで動作します!...

1.- この例に従いました :[ App Engine Java SDK で Google Cloud SQL を使用する

しかし、guestbook.jsp に次の行を追加しました。

<%@ page import="com.google.appengine.api.rdbms.AppEngineDriver" %>

次に、URL 接続をこれに変更しました。私の場合、ユーザー名はありません。

url = "jdbc:google:rdbms:INSTANCE_NAME/DATABASE_NAME";

また、私はこの行にコメントしました

// Class.forName("com.mysql.jdbc.GoogleDriver");

2.- 上記のように、mysql-connector.jar をコピーして appengine-java-sdk-xxx/lib/impl にドロップしました。

3.- ここで説明されているようにプロジェクトを構成しましたCloud SQL をサポートする新しいウェブアプリを作成する

4.- ここで説明されているように、Google SQL インスタンスを構成しましたアクセスの構成

5.- 最後に、ここで説明したようにプロジェクトをデプロイしましたアプリケーションのアップロード

ローカルで実行でき、うまく機能します。

これがお役に立てば幸いです。

于 2013-09-11T06:40:56.367 に答える