2

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

我的项目是基本的留言簿示例应用程序,我添加了 Scala 特性,然后我添加了一个带有方法的 Scala 对象,该方法接受一个字符串,向其中添加一些东西,然后返回修改后的字符串。然后,我修改了工作中的留言簿示例,以添加对此 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 版本中不存在的首选项。

目前我有点不知所措,作为这种工具组合的新手,我一定很容易错过这种工具,但我不知道它可能是什么。

作为参考,我正在运行 Scala 2.9.0.1、GAE 1.5.2 和 Eclipse Indigo Build id:20110615-0604。

4

2 回答 2

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 的项目工作。

于 2011-11-06T16:05:59.180 回答
0

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

于 2011-09-01T06:48:37.653 回答