我和这个人有完全相同的问题:
https://groups.google.com/forum/#!topic/google-appengine-java/4y90M9NlWsA
但是没有回复,我在互联网上看不到任何有帮助的内容。有谁知道为什么会这样?
RemoteApiOptions options = new RemoteApiOptions()
.server("localhost", 8888)
.credentials("blah@blah.blah", "");
RemoteApiInstaller installer = new RemoteApiInstaller();
installer.install(options);
堆栈跟踪是:
Exception in thread "main" java.io.IOException: unexpected response from remote api: {rtok: null, app_id: MyCorrectAppId}
at com.google.appengine.tools.remoteapi.RemoteApiInstaller.getAppIdFromServer(RemoteApiInstaller.java:326)
at com.google.appengine.tools.remoteapi.RemoteApiInstaller.loginImpl(RemoteApiInstaller.java:278)
at com.google.appengine.tools.remoteapi.RemoteApiInstaller.login(RemoteApiInstaller.java:239)
at com.google.appengine.tools.remoteapi.RemoteApiInstaller.install(RemoteApiInstaller.java:106)
at uk.blah.blah.MyClass.main(MyClass.java:114)
答案 0 :(得分:1)
我注意到您已将appengine-web.xml内的<application>
元素设置为MyCorrectAppId
。那就是问题所在。正如尤金正确指出的那样, ID必须全部小写,如mycorrectappid
。引用丹·桑德森的书 Programming Google App Engine :
由于域名中使用了应用程序ID,因此ID只能包含小写字母,数字或连字符,且必须短于32个字符。此外,Google会将每个Gmail用户名保留为只有相应Gmail用户才能注册的应用程序ID。
如果您在Eclipse中工作,则需要记住在设置新的Web应用程序项目时(“新建Web应用程序项目”对话框底部有一个选项,允许您指定ID而不是离开它空白)。
对于独立环境,如果您将ID留空(我将默认为“no_app_id”),我认为您可能没问题。
希望有所帮助!
答案 1 :(得分:1)
根据RemoteApiInstaller.getAppIdFromServer
方法的code,如果在响应正文中找不到unexpected response from remote api
属性,则可以抛出异常app_id
。在您的情况下,似乎MyCorrectAppId
可能与PAIR_REGEXP模式不匹配,即它包含除数字以外的任何字符,小写字母,波浪号,下划线或减号。