2013-01-01 378 views
2

我试图使用电梯JPA时,我参考模型,它调用超级构造函数,我得到一个例外:处理异常

object Model extends LocalEMF("LiftPersistenceUnit") with RequestVarEM 

问题是例外隐藏此异常背后:

java.lang.NoClassDefFoundError: Could not initialize class... 

所以,我的问题是:什么是登录/处理在这种情况下,异常的最好方法?

另外,任何人都可以推荐另一种模式使用电梯JPA?该方法模型已代码是推荐的方式,但它不是很人性化IMO。这个想法是有一个单独的实体管理器工厂是通过请求variable.sc

回答

3

我能想到的执行之前LocalEMF的构造函数的时候,唯一的方式访问:

class Model(val init: Unit = println("Hai")) 
    extends LocalEMF("LiftPersistenceUnit") with RequestVarEM 

也许你可以代理LocalEMF("LiftPersistenceUnit")一个电话,并添加例外相应的日志记录,使用一些特殊技巧。

编辑

我发现:

class LocalEMF(haha: String) { val e = throw new RuntimeException } 
trait RequestVarEM 

class Model(val init: Unit = println("Hai")) extends { val e = 
    try new LocalEMF("LiftPersistenceUnit") catch { 
    case t: Throwable => println("Catched: " + t); throw t 
    } 
} with RequestVarEM 
+1

边注:里面'尝试... catch'花括号是不必要的。 – sschaef

+0

谢谢你,更新 – idonnie

+0

该解决方案产生一个编译器错误:只允许输入早期对象初始化部分 –