题
我正在与GWT一起编写一个应用程序,在互联网上发现有一个库可轻松使用GDATA功能。特别是我需要与Google日历进行集成。我遵循GWT-GDATA网站的官方指南进行身份验证( http://code.google.com/p/gwt-gdata/wiki/gettingstarted )但是不幸的是,我有一个错误。这是错误:
17:59:12.463 [ERROR] [testmappa] Unable to load module entry point class testMappa.client.TestMappa (see associated exception for details)
com.google.gwt.core.client.JavaScriptException:
(TypeError): $wnd.google.accounts is undefined
fileName: http://127.0.0.1:8888
lineNumber: 29
stack: ("http://www.google.com/calendar/feeds/")@http://127.0.0.1:8888:29
connect("http://127.0.0.1:8888/TestMappa.html?gwt.codesvr=127.0.0.1:9997","`gL1<a3s4B&Y{(Ci","127.0.0.1:9997","testmappa","2.0")@:0
((void 0),"testmappa","http://127.0.0.1:8888/testmappa/")@http://127.0.0.1:8888/testmappa/hosted.html?testmappa:264
z()@http://127.0.0.1:8888/testmappa/testmappa.nocache.js:2
(-2)@http://127.0.0.1:8888/testmappa/testmappa.nocache.js:8
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.accounts.client.User.login(User.java)
at testMappa.client.TestMappa.onModuleLoad(TestMappa.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:369)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:185)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:380)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:637)
我无法理解此错误的原因。我的代码简单:
String scope = "http://www.google.com/calendar/feeds/";
User.login(scope);
据我所知,它应该按原样起作用。我不知道该怎么办,我在这里问如何解决此问题,以及我是否可以直接使用GDATA本机Java库,但是我相信对于客户端GWT代码无法做到这一点(由于代码将转换为JavaScript)。
谢谢你。
解决方案
您上面粘贴的两行代码实际上应该在这样的运行方法中 -
if (GData.isLoaded(GDataSystemPackage.CALENDAR)) { Window.alert("Package is loaded"); } else { GData.loadGDataApi("MyApiKey", new Runnable() { public void run() { String scope = "http://www.google.com/calendar/feeds/"; User.login(scope); //remaining code comes in here. you may create a new method //and call it from here. } }, GDataSystemPackage.CALENDAR); }
如果您不加载GDATA API代码,则可能会获得粘贴的JavaScript错误。
不隶属于 StackOverflow