Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Gwt java.lang.ExceptionInInitializerError

Автор вопроса: user1459976Ответов: 2

Я работаю над приложением GWT и продолжаю получать сообщение об ошибке, показанное ниже.

Я следовал руководству GWT относительно соглашений об именах для классов сервлетов и следовал структуре Service/Async/ServiceImpl.

Я также попытался добавить аргумент -XX:-UseSplitVerifier VM, чтобы исправить предыдущую проблему. какие-нибудь идеи о том, что происходит?

SEVERE: javax.servlet.ServletContext log: Exception while dispatching incoming RPC
call
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at

com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_
(Runtime.java:127)
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance
(Runtime.java:135)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.instantiate
(ServerSerializationStreamReader.java:914)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize
(ServerSerializationStreamReader.java:556)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject
(AbstractSerializationStreamReader.java:119)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.
readValue(ServerSerializationStreamReader.java:138)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue
(ServerSerializationStreamReader.java:385)
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:303)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:206)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost
(RemoteServiceServlet.java:248)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost
(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1166)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter
(HeaderVerificationFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter
(ServeBlobFilter.java:60)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter
(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter
(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:78)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle
(JettyContainerService.java:369)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.UnsupportedOperationException: ERROR: GWT.create() is only usable
in client code!  It cannot be called, for example, from server code.  If you are
running a unit test, check that your test case extends GWTTestCase and that
GWT.create() is not called from within an initializer or constructor.
at com.google.gwt.core.client.GWT.create(GWT.java:91)
at com.google.gwt.user.client.ui.UIObject.<clinit>(UIObject.java:187)
... 46 more
  • заметил ERROR: GWT.create() is only usable in client code!? посмотри в своих сервлетах Eliran Malka 16.06.2012
  • у меня нет GWT.create() в моем серверном коде, только в клиентском коде user1459976 16.06.2012
  • Вы соответствующим образом настроили дескриптор развертывания (web.xml)? Eliran Malka 16.06.2012
  • да, поместите имя класса Impl для имени сервлета и поместите импорт для имени класса сервлета. и в сопоставлении сервлетов сделал то же самое для имени сервлета и поместил атрибут gwt.xml rename-to и RemoteServiceRelativePath(thisthing) в шаблон URL-адреса, начинающийся с / и разделенный / user1459976 17.06.2012

exceptioninitializationrpcgwt

Ответы

Ответ 1 · рейтинг 1 · Nuno Gonçalves

Почти наверняка вы вызываете класс, который является только клиентом GWT. У вас есть ошибка:

 Caused by: java.lang.UnsupportedOperationException: ERROR: GWT.create() is only usable
in client code!  It cannot be called, for example, from server code.  If you are
running a unit test, check that your test case extends GWTTestCase and that
GWT.create() is not called from within an initializer or constructor.

Вам не нужно специально вызывать "GWT.create()", чтобы получить это исключение. вы можете вызывать только клиентский класс GWT на стороне сервера. Также вы можете содержать объект "только для клиента" в одном из аргументов вашего RPC или даже в общем коде, вызываемом на стороне сервера.

Ответ 2 · Peter L

FWIW, у меня была такая же ошибка, и в итоге она стала константой (статический финал), которая использовала GWT.create() для инициализации. Константа находилась в классе, который должен был быть загружен синтаксическим анализатором внедрения зависимостей GIN.

IE: он пытался загрузить класс (и вызвать GWT.create()) во время компиляции модуля.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы