2011-12-17 9 views
3

私はAppEngineでQuercus/PHPを使用しています。Google AppEngine java.net.Socketは制限付きエラーです

java.lang.NoClassDefFoundError: java.net.Socket is a restricted class. Please see the Google App Engine developer's guide for more details.

私はGoogleで検索してきたと私は他の同じエラーに遭遇していることがわかりますが、が、原因が異なりようだ:私はfile_get_contents($url);で簡単なスクリプトを実行すると、私はエラーを取得します。このエラーが私のために何をしていると思いますか?

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

答えて

0

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

これは、ハイバーネーションはGoogleのアプリケーションエンジンで動作しませんと言います。たぶんこれが答えです。

+1

私は知っている限り私は休止状態を使用していませんが、私はstacktraceでこの質問を後で再投稿すべきだと思います。私は今私の家のコンピュータではないので、今投稿することはできません。 – ofko

+0

よろしくお願いいたします。それが役立ちます。 –

2

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

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

この文書によると、あなたはこのサンドボックスでソケットを開くことができません。そのため、「java.net.Socketは制限されたクラスです」と書かれています。

2

olivierlemasleは正解ですが、ここではいくつかの検索を行った後に見つけた解決策があります。コメント欄では、user "Phil" recommend

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

、それが働きました!

+0

オンラインで見つかった場合は、ソースへのリンクを残してください。 – hakre

1

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

いくつかの制限がありますが、大部分の使用をサポートする必要があります。

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

一部のみが有効になりますので、人気を集めています。

関連する問題