java.lang.ClassNotFoundException:scala.reflect.api.TypeCreator

时间:2013-12-13 23:25:53

标签: scala scala-2.10

我正在尝试反思一个伴侣物体。使用这个......

import scala.reflect.runtime.{universe => ru}

private lazy val universeMirror = ru.runtimeMirror(getClass.getClassLoader)

def companion[T, T2](implicit tt: ru.TypeTag[T]): T2 = {
  val companionMirror = universeMirror.reflectModule(ru.typeOf[T].typeSymbol.companionSymbol.asModule)
  companionMirror.instance.asInstanceOf[T2]
}

所有内容编译都很好,但在运行时,我得到以下异常:

java.lang.NoClassDefFoundError: scala/reflect/api/TypeCreator
  ......
  at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:66) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) ~[netty-3.8.0.Final.jar:na]
  at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) ~[netty-3.8.0.Final.jar:na]
  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [na:1.6.0_65]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [na:1.6.0_65]
  at java.lang.Thread.run(Thread.java:695) [na:1.6.0_65]
Caused by: java.lang.ClassNotFoundException: scala.reflect.api.TypeCreator
  at java.net.URLClassLoader$1.run(URLClassLoader.java:202) ~[na:1.6.0_65]
  at java.security.AccessController.doPrivileged(Native Method) ~[na:1.6.0_65]
  at java.net.URLClassLoader.findClass(URLClassLoader.java:190) ~[na:1.6.0_65]
  at java.lang.ClassLoader.loadClass(ClassLoader.java:306) ~[na:1.6.0_65]
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) ~[na:1.6.0_65]
  at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ~[na:1.6.0_65]

1 个答案:

答案 0 :(得分:1)

您的运行时类路径上看起来没有scala-reflect.jar。