我正在运行一个抛出此错误的单元测试:
java.lang.NoClassDefFoundError: com/sun/logging/LogDomains
at com.sun.enterprise.util.ORBManager.<clinit>(ORBManager.java:93)
at com.sun.enterprise.naming.SerialInitContextFactory.<clinit>(SerialInitContextFactory.java:65)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:175)
myCode
我的代码是:
try {
Context c = new InitialContext(); //line that errors
return (T) c.lookup(name);
} catch (NamingException ne) {
log.error(ne.getMessage(), ne);
throw new RuntimeException(ne);
}
如何解决此问题?
这似乎是answer would work,除了我在评论中提到的巨大交易障碍:
问题在于它们似乎爆炸了一堆罐子并将它们重新包装在
glassfish-embedded-all
内。你最好希望你使用他们在那里打包的相同的slf4j版本,因为他们没有办法排除他们给你的东西。必须有更好的方法。
FWIW,我正在部署到Glassfish 3。
也许我需要阻止我的单元测试进入这一行。但是我感到很奇怪NoClassDefFoundError
为什么会发生这种情况?