Datanucleus Enhancer не работает с GAE + Scala + Eclipse - PullRequest
2 голосов
/ 01 сентября 2011

Я пытаюсь оценить использование GAE + Scala для небольшого побочного проекта, но я не могу решить проблему с усилителем Datanucleus.

Мой проект является базовым примером приложения GuestBook, к которому я добавил природу Scala, затем я добавил объект Scala с методом, который принимает строку, добавляет в нее некоторые элементы, а затем возвращает измененную строку.,Затем я изменил рабочий пример GuestBook, чтобы добавить вызов к этому методу Scala.Это все вещи уровня "Hello World".

Моя проблема в том, что я получаю следующее исключение из Enhancer

DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
Aug 31, 2011 9:38:35 PM org.datanucleus.metadata.MetaDataManager loadClasses
SEVERE: Class "guestbook.server.Slave$" was not found in the CLASSPATH. Please check your         specification and your CLASSPATH.
org.datanucleus.exceptions.ClassNotResolvedException: Class "guestbook.server.Slave$" was not found in the CLASSPATH. Please check your specification and your CLASSPATH.
    at     org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:250)
    at org.datanucleus.JDOClassLoaderResolver.classForName(JDOClassLoaderResolver.java:415)
    at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java:379)
    at     org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:743)
    at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:545)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1252)
    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.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:57    )
at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:60)
    at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41)

DataNucleus Enhancer completed with success for 0 classes. Timings : input=237 ms,     enhance=0 ms, total=237 ms. Consult the log for full details
DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full     details

Я посмотрел на это и имеювидел одну ссылку на добавление jar Scala в путь к классу энхансера, но нет указаний на то, как это сделать с помощью версии Google для GAE.Указания, предоставленные Datanucleus, относятся к предпочтениям, которых нет в версии GAE.

В данный момент я немного растерялся, должно быть что-то легкое, что я скучаю как новичок в этой комбинацииинструментов, но я не знаю, что это может быть.

Для справки я использую Scala 2.9.0.1, GAE 1.5.2 и Eclipse Indigo Build id: 20110615-0604.

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

В последнем плагине Scala (2.0.0 beta 12) добавлен валидатор пути к классам, который, похоже, усложняет проблему. Похоже, datanucleus больше не может найти классы sclala-library.jar или scala. Индиго и предыдущий плагин раньше работали, но теперь вы не можете поместить scala-library.jar в ваш classpath, так как «улучшенный» плагин scala автоматически помещает один в ваш путь и не позволит вам добавить его в ваш проект. К сожалению, я не могу найти старый плагин, поэтому я думаю, что действительно пришло время отказаться от Scala, и я потратил на него все время. Надеемся, что Java 8 будет включать в себя некоторые современные функции, такие как C #, поэтому нам не нужно зависеть от такого количества полузапеченных решений. Мы не должны включать Groovy, Scala, чрезмерно сложные веб-фреймворки и 100 JAR-файлов с открытым исходным кодом с тоннами перекрывающихся функций для создания веб-приложения! Может быть, это конец Java?

Извините за провал ... еще одна суббота была потрачена на то, чтобы заставить работать проекты на основе Java после обновления чего-либо.

0 голосов
/ 01 сентября 2011

DataNucleus Enhancer - это простой Java-процесс, и если вы передадите ввод «guestbook.server.Slave $» в качестве имени класса, он попытается найти его, и произойдет сбой.Определите, где ваш ввод (для энхансера) неправильный

...