我正在使用 GWT 编写一个应用程序,我想将其部署到 Google App Engine。我想使用 JRE 中的一些类,例如 java.io.BufferedReader;
java.net.URL
javax.crypto.Cipher
java.util.zip.InflaterInputStream
,列于 JRE 类白名单
- https://developers.google.com/appengine/docs/java/jrewhitelist
我正在使用 Eclipse,当我尝试在本地运行我的应用程序时,编译器会抛出类似 [ERROR] [gwtlist] 的错误 - 第 46 行:没有可用于 java.net.URL 类型的源代码;您是否忘记继承所需的模块?
.
在 Google App Engine 一般问题
中 - https://developers.google.com/appengine/kb/general#language据说:
...此外,基于 Java 的应用程序只能使用 JRE 类白名单中的 JRE 类。
我的问题是我的想法是对还是错?这个JRE类白名单
可以在客户端使用,还是只对服务器端代码有用?在这种情况下,我不需要使用 Google App Engine,因为所有客户端代码都必须仅用纯 GWT
编写,并使用 JRE Emulation Reference
中的一些 java 类-https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation?hl=es-419#Package_java_io 。在这种情况下,Google App Engine 的目标是什么?只是为了模拟服务器吗?
编辑:如果 Google App Engine 只能在服务器端模拟 JRE 类,您能否告诉我应用程序到底在哪里运行。我的意思是情况是:
应用部署在 Google App Engine 上。
客户端运行应用并登录。
服务器端代码在其他服务器上打开外部文件,解压缩并将结果发送到客户端。
我的问题是转账
是如何进行的?是谷歌云内的所有内容,还是客户端必须下载,例如这个未压缩的文件?``
最佳答案
Appengine 代码仅是服务器端的。
如果是客户端代码,您可以在 GWT 中使用 AE 上未列入白名单的类。无论如何它都会被编译成 javascript。但是,您用于通过 GWT 从客户端进行 rpc 调用的任何服务器端代码都需要位于 AE 白名单中,因为它在那里运行。
错误“没有可用于 java.net.URL 类型的源代码”源自 GWT。基本上它是在寻找 src 以便编译成 javascript。 GWT 也有一个可以编译的白名单,除此之外,您还需要 src,除非您在 *.gwt.xml 文件中将其继承为 GWT 模块。请参阅https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation
关于java - 哪些类可以在部署到 Google App Engine 的 GWT 应用程序中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11099237/