2011-09-01 43 views
2

我想用GAE + Scala來評估一個小方面的項目,但我似乎無法解決Datanucleus增強器的問題。Datanucleus Enhancer不能與GAE + Scala + Eclipse一起工作

我的項目是基本的GuestBook示例應用程序,我添加了一個Scala特性,然後我添加了一個帶有一個字符串的方法的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 

我已經調查這一點,並看到一個參照添加斯卡拉罐子增強器的類路徑以下異常,但沒有跡象如何使用Google的GAE版本來完成此操作。 Datanucleus提供的指導是指在GAE版本中不存在的偏好。

我目前處於虧損狀態,這一定很容易讓我錯過這個工具組合的新手,但我不知道它會是什麼。

僅供參考我正在運行Scala 2.9.0.1,GAE 1.5.2和Eclipse Indigo Build ID:20110615-0604。

回答

0

DataNucleus增強器是一個簡單的java進程,如果您將「guestbook.server.Slave $」的輸入作爲類名傳遞給它,那麼它將嘗試找到它並失敗。弄清楚你的輸入(對增強器)是錯誤的地方

+0

我的問題是,我不知道我對增強器的輸入來自哪裏。它看起來像所有的DataNucleus增強器配置已被移入GAE Eclipse插件並且無法訪問。至少我不知道如何訪問它。 – Ukko

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的項目升級之後工作。