Datanucleus Enhancer不使用GAE + Scala + Eclipse

时间:2011-09-01 03:28:38

标签: google-app-engine scala datanucleus gae-eclipse-plugin

我正在尝试使用GAE + Scala来评估一个小方案,但我似乎无法解决Datanucleus增强器的问题。

我的项目是我添加了Scala特性的基本GuestBook示例应用程序,然后我添加了一个带有字符串的方法的Scala对象,向其添加一些内容,然后返回修改后的字符串。然后我修改了工作的GuestBook示例以添加对此Scala方法的调用。这都是“Hello World”级别的东西。

我的问题是我从增强器

中得到以下异常
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

我已经研究了这个,并且已经看到了一个将Scala jar添加到增强器类路径的引用,但没有指示如何使用Google的GAE版本执行此操作。 Datanucleus提供的指示是指GAE版本中不存在的偏好。

我现在有点茫然,它一定是容易的,我作为这种工具组合的新手而失踪但我不知道它可能是什么。

For Reference我正在运行Scala 2.9.0.1,GAE 1.5.2和Eclipse Indigo Build id:20110615-0604。

2 个答案:

答案 0 :(得分:1)

最新的Scala插件(2.0.0 beta 12)添加了一个类路径验证器,似乎使问题复杂化。似乎datanucleus不能再找到sclala-library.jar或scala类。 Indigo和之前的插件曾经工作但是现在你不能把scala-library.jar放在你的类路径中,因为“改进的”scala插件会自动将一个放在你的路径中并且不允许你在项目中放置一个。不幸的是我找不到旧的插件所以我认为现在真的是时候放弃Scala并且我一直浪费它。希望Java 8将包含一些像C#这样的现代功能,因此我们不必依赖于这么多半生不熟的解决方案。我们不应该包括groovy,scala,过于复杂的Web框架,以及100个具有大量重叠功能的开源jar文件来制作Web应用程序!也许这是Java的终结?

对不起发泄......另一个星期六浪费在升级后让基于java的项目工作。

答案 1 :(得分:0)

DataNucleus增强器是一个简单的java进程,如果你将“guestbook.server.Slave $”的输入作为类名传递给它,那么它将尝试找到它并失败。找出你的输入(增强器)错误的地方