如何调试scalajs链接器错误:不存在方法java.lang.Class.getDeclaredFields

如何调试scalajs链接器错误:不存在方法java.lang.Class.getDeclaredFields,scala,linker,scala.js,Scala,Linker,Scala.js,将以下方法添加到后,将case类映射到map或js.Dictionary——现在我已经尝试了以下五到六种变体——我的代码编译良好,没有警告,但在fastOptJSsjs链接阶段出错 方法 请注意,我尝试过的所有变体都以稍微不同的方式执行相同的操作 错误 [info]快速优化/Users/justin/Desktop/arete/jt/client/target/scala-2.11/client-fastopt.js [错误]引用不存在的类java.lang.reflect.Field [错误]

将以下方法添加到后,将case类映射到
map
js.Dictionary
——现在我已经尝试了以下五到六种变体——我的代码编译良好,没有警告,但在
fastOptJS
sjs
链接阶段出错

方法 请注意,我尝试过的所有变体都以稍微不同的方式执行相同的操作

错误
[info]快速优化/Users/justin/Desktop/arete/jt/client/target/scala-2.11/client-fastopt.js
[错误]引用不存在的类java.lang.reflect.Field
[错误]从com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.ccToMap(java.lang.Object)scala.collection.immutable.Map调用
[错误]从com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$调用()
[错误]从com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(japgolly.scalajs.react.extra.router.RouterCtl)japgolly.scalajs.react.ReactElement调用
[错误]从com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(java.lang.Object)java.lang.Object调用
从scala.collection.LinearSeqOptimized$class.foreach(scala.collection.LinearSeqOptimized,scala.Function1)scala.Unit调用[error]
从scala.collection.mutable.MutableList.foreach(scala.Function1)scala.Unit调用[错误]
从scala.collection.TraversableLike$WithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object调用[error]
从scala.collection.immutable.Stream$StreamWithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object调用[error]
[错误]从org.scalajs.testinterface.internal.Slave.org$scalajs$testinterface$internal$Slave$$execute(scala.scalajs.js.Dynamic)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.Slave.handlemsimpl(java.lang.String,scala.Function0)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.handleMsg(java.lang.String)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.$$anonfun$1(java.lang.String)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.init()scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.$$js$exported$meth$init()java.lang.Object调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.init调用
[错误]使用@JSExport导出到JavaScript
[错误]涉及实例化类:
[错误]com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$
[错误]com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2
[错误]scala.collection.mutable.Queue
[错误]scala.collection.mutable.MutableList
[错误]scala.collection.TraversableLike$WithFilter
[错误]scala.collection.immutable.Stream$StreamWithFilter
[错误]org.scalajs.testinterface.internal.Slave
[错误]org.scalajs.testinterface.internal.Master
[错误]引用不存在的方法java.lang.Class.getDeclaredFields()[java.lang.reflect.Field]
[错误]从com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.ccToMap(java.lang.Object)scala.collection.immutable.Map调用
[错误]从com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$调用()
[错误]从com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(japgolly.scalajs.react.extra.router.RouterCtl)japgolly.scalajs.react.ReactElement调用
[错误]从com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(java.lang.Object)java.lang.Object调用
从scala.collection.LinearSeqOptimized$class.foreach(scala.collection.LinearSeqOptimized,scala.Function1)scala.Unit调用[error]
从scala.collection.mutable.MutableList.foreach(scala.Function1)scala.Unit调用[错误]
从scala.collection.TraversableLike$WithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object调用[error]
从scala.collection.immutable.Stream$StreamWithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object调用[error]
[错误]从org.scalajs.testinterface.internal.Slave.org$scalajs$testinterface$internal$Slave$$execute(scala.scalajs.js.Dynamic)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.Slave.handlemsimpl(java.lang.String,scala.Function0)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.handleMsg(java.lang.String)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.$$anonfun$1(java.lang.String)scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.init()scala.Unit调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.$$js$exported$meth$init()java.lang.Object调用
[错误]从org.scalajs.testinterface.internal.BridgeBase.init调用
[错误]使用@JSExport导出到JavaScript
[错误]涉及实例化类:
[错误]com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$
[错误]com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2
[错误]scala.collection.mutable.Queue
[错误]scala.collection.mutable.MutableList
[错误]scala.collection.TraversableLike$WithFilter
[错误]scala.collection.immutable.Stream$StreamWithFilter
[错误]org.scalajs.testinterface.internal.Slave
[错误]org.scalajs.testinterface.internal.Master
[trace]堆栈跟踪被抑制:运行最后一个客户端/compile:fastOptJS以获得完整输出。
[错误](客户端/编译:fastOptJS)存在链接错误
[错误]总时间:36秒,已完成2016年5月10日凌晨2:01:07
我试过的 由于不熟悉链接器的详细信息,我只能尝试一些“明显的”诊断:

  • 无论我是否调用该方法,都会抛出此错误(它不必位于代码路径中,因此当方法本身被调用时会抛出此错误)
      def ccToMap(cc: AnyRef) =
        (Map[String, Any]() /: cc.getClass.getDeclaredFields) {
          (a, f) =>
            f.setAccessible(true)
            a + (f.getName -> f.get(cc))
        }
    
     [info] Fast optimizing /Users/justin/Desktop/arete/jt/client/target/scala-2.11/client-fastopt.js
     [error] Referring to non-existent class java.lang.reflect.Field
     [error]   called from com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.ccToMap(java.lang.Object)scala.collection.immutable.Map
     [error]   called from com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.<init>()
     [error]   called from com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(japgolly.scalajs.react.extra.router.RouterCtl)japgolly.scalajs.react.ReactElement
     [error]   called from com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(java.lang.Object)java.lang.Object
     [error]   called from scala.collection.LinearSeqOptimized$class.foreach(scala.collection.LinearSeqOptimized,scala.Function1)scala.Unit
     [error]   called from scala.collection.mutable.MutableList.foreach(scala.Function1)scala.Unit
     [error]   called from scala.collection.TraversableLike$WithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object
     [error]   called from scala.collection.immutable.Stream$StreamWithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object
     [error]   called from org.scalajs.testinterface.internal.Slave.org$scalajs$testinterface$internal$Slave$$execute(scala.scalajs.js.Dynamic)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.Slave.handleMsgImpl(java.lang.String,scala.Function0)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.handleMsg(java.lang.String)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.$$anonfun$1(java.lang.String)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.init()scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.$$js$exported$meth$init()java.lang.Object
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.init
     [error]   exported to JavaScript with @JSExport
     [error] involving instantiated classes:
     [error]   com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$
     [error]   com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2
     [error]   scala.collection.mutable.Queue
     [error]   scala.collection.mutable.MutableList
     [error]   scala.collection.TraversableLike$WithFilter
     [error]   scala.collection.immutable.Stream$StreamWithFilter
     [error]   org.scalajs.testinterface.internal.Slave
     [error]   org.scalajs.testinterface.internal.Master
     [error] Referring to non-existent method java.lang.Class.getDeclaredFields()     [java.lang.reflect.Field
     [error]   called from com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.ccToMap(java.lang.Object)scala.collection.immutable.Map
     [error]   called from com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$.<init>()
     [error]   called from com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(japgolly.scalajs.react.extra.router.RouterCtl)japgolly.scalajs.react.ReactElement
     [error]   called from com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2.apply(java.lang.Object)java.lang.Object
     [error]   called from scala.collection.LinearSeqOptimized$class.foreach(scala.collection.LinearSeqOptimized,scala.Function1)scala.Unit
     [error]   called from scala.collection.mutable.MutableList.foreach(scala.Function1)scala.Unit
     [error]   called from scala.collection.TraversableLike$WithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object
     [error]   called from scala.collection.immutable.Stream$StreamWithFilter.map(scala.Function1,scala.collection.generic.CanBuildFrom)java.lang.Object
     [error]   called from org.scalajs.testinterface.internal.Slave.org$scalajs$testinterface$internal$Slave$$execute(scala.scalajs.js.Dynamic)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.Slave.handleMsgImpl(java.lang.String,scala.Function0)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.handleMsg(java.lang.String)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.$$anonfun$1(java.lang.String)scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.init()scala.Unit
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.$$js$exported$meth$init()java.lang.Object
     [error]   called from org.scalajs.testinterface.internal.BridgeBase.init
     [error]   exported to JavaScript with @JSExport
     [error] involving instantiated classes:
     [error]   com.jshin47.jtdc.client.module.visualization.DiodeStateVizC$
     [error]   com.jshin47.jtdc.client.module.landing.LandingLocC$$anonfun$2
     [error]   scala.collection.mutable.Queue
     [error]   scala.collection.mutable.MutableList
     [error]   scala.collection.TraversableLike$WithFilter
     [error]   scala.collection.immutable.Stream$StreamWithFilter
     [error]   org.scalajs.testinterface.internal.Slave
     [error]   org.scalajs.testinterface.internal.Master
     [trace] Stack trace suppressed: run last client/compile:fastOptJS for the full output.
     [error] (client/compile:fastOptJS) There were linking errors
     [error] Total time: 36 s, completed May 10, 2016 2:01:07 AM