Исключение при развертывании в Google App Engine Tutorial Enhancer - PullRequest
0 голосов
/ 26 августа 2011

Я только начал изучать GWT и Google App Engine.Что бы там ни было, я начал с учебника Развертывание в Google App Engine, как показано здесь:

http://code.google.com/webtoolkit/doc/latest/tutorial/appengine.html

Этот учебник основан на учебнике RPC, как здесь:

http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

Я скачал проект StockWatcher и без проблем выполнил учебник по RPC, а затем вернулся к обучению «Развертывание в Google App Engine».

I'mиспользуя Eclipse, но я предполагаю, что тот, кто делал урок RPC, этого не сделал, потому что я должен был следовать разделу инструкции «Настройка проекта (без Eclipse)»

Все шло хорошо, пока ядобрался до последнего шага учебника, чтобы протестировать приложение.Когда я получаю строку:

Список акций = (Список) q.execute (getUser ());

в файле src / com.google.gwt.sample.stockwatcher.сервер / StockServiceImpl.java.Полный код приведен в руководстве, поэтому я не буду загружать его здесь.

Оператор q.execute () выдает следующее исключение:

javax.jdo.JDOFatalUserException: нет метаданных для com.google.gwt.sample.stockwatcher.server.Stock.Возможно, вам нужно запустить энхансер в этом классе?NestedThrowables: org.datanucleus.store.appengine.FatalNucleusUserException: нет метаданных для com.google.gwt.sample.stockwatcher.server.Stock.Возможно, вам нужно запустить энхансер для этого класса?

Я пробовал несколько дней без каких-либо успехов.Я не понимаю, как я запускаю «энхансер», и при этом я не знаю, что это значит.Это название инструмента, и они просто забыли использовать имя Enhancer с заглавной буквы?

Я подозреваю, что, поскольку я не создавал проект с нуля, есть некоторые настройки, в которых учебник не упомянул о том, что необходимо иметь при загрузке проекта RPC в качестве отправной точки.

Хотя я не знаю, что означает предложение об "энхансере", я видел этот раздел в build.xml, если это помогает ....

   name="datanucleusenhancer"
   classpathref="tools.class.path"
   classname="org.datanucleus.enhancer.tools.EnhancerTask" />
<datanucleusenhancer
   classpathref="tools.class.path"
   failonerror="true">
  <fileset dir="war/WEB-INF/classes" includes="**/*.class" />
</datanucleusenhancer>

Может кто-нибудь датьмне намек на то, что я сделал не так?Спасибо.

Нет, пожалуйста,

Ответы [ 2 ]

0 голосов
/ 25 декабря 2012

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

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Long id;

  public Long getId() {
    return this.id;
  }
0 голосов
/ 27 августа 2011

После тщательного изучения учебника я пропустил следующую строку в Stock.java:

@ PersistenceCapable (identityType = IdentityType.APPLICATION)

Кажется, это решает проблему, но я не понимаю, насколько это сообщение было полезным.

avax.jdo.JDOFatalUserException: нет метаданных для com.google.gwt.sample.stockwatcher.server.Stock. Возможно, вам нужно запустить энхансер в этом классе? NestedThrowables: org.datanucleus.store.appengine.FatalNucleusUserException: нет метаданных для com.google.gwt.sample.stockwatcher.server.Stock. Возможно, вам нужно запустить энхансер для этого класса?

Во-первых, он предлагает «запустить энхансер», а это не то, что вам нужно, и я не могу понять, как запустить энхансер, чтобы убедиться, что это не поможет. Я также не вижу, где в руководстве есть описание того, как эта строка создает метаданные. Это не описано в разделе о коде «Что нужно заметить».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...