3

AppEngine で Quercus/PHP を使用しています。で簡単なスクリプトを実行するとfile_get_contents($url);、エラーが発生します。

java.lang.NoClassDefFoundError: java.net.Socket は制限されたクラスです。詳細については、Google App Engine デベロッパー ガイドをご覧ください。

私はグーグルで検索しましたが、他の人が同じエラーに遭遇したことがわかりましたが、原因は異なるようです. このエラーの原因は何だと思いますか?

最新の AppEngine Java SDK と最新の Quercus を使用しています。

4

4 に答える 4

2

olivierlemasle は正しいですが、さらに検索して見つけた解決策を次に示します。コメント セクションで、ユーザー「Phil」が次のことを推奨しています。

import java.net.URL;
define('URLFetchServiceFactory', new Java('com.google.appengine.api.urlfetch.URLFetchServiceFactory'));
$data = URLFetchServiceFactory->getURLFetchService()->fetch(new URL($url))->getContent();

テストしたところ、うまくいきました!

于 2011-12-17T22:49:14.007 に答える
2

Google AppEngine/Java を使用する場合、実際には完全な JVM にアクセスすることはできません。アプリケーションは制限されたサンドボックスで実行されます。こちらのドキュメントを参照してください:

https://developers.google.com/appengine/docs/java/runtime?hl=ja#The_Sandbox

このドキュメントによると、このサンドボックスでソケットを開くことはできません。だから「java.net.Socketは制限付きクラス」と書いてあります。

于 2011-12-17T17:52:02.390 に答える
1

java.net.Socket の App Engine サポートは 1.7.2 で展開され始めており、信頼できるテスターの提出が現在行われています。

いくつかの制限がありますが、ほとんどの用途をサポートするはずです。

サインアップはこちら: https://docs.google.com/a/google.com/spreadsheet/viewform?formkey=dF9QR3pnQ2pNa0dqalViSTZoenVkcHc6MQ#gid=0

人気があるので、一部のみ有効になります。

于 2012-10-04T03:35:57.977 に答える
0

API のホームページ ( http://quercus.caucho.com/ ) によると、休止状態を使用できます。クイックグーグルは私にこれを返しました: GWT and Hibernate - NoClassDefFoundError when using Hibernate

休止状態はGoogleアプリエンジンでは機能しないと言われています。多分これが答えです。

于 2011-12-17T14:24:32.387 に答える