Java 运行床单样品产生“样品”;类型为';的服务不存在;afIocConfig::FactoryDefaults'&引用;错误
我正在尝试使用编程语言创建一个新的web应用程序,但无法运行最简单的示例 代码是:Java 运行床单样品产生“样品”;类型为';的服务不存在;afIocConfig::FactoryDefaults'&引用;错误,java,runtime-error,fantom,afbedsheet,Java,Runtime Error,Fantom,Afbedsheet,我正在尝试使用编程语言创建一个新的web应用程序,但无法运行最简单的示例 代码是: using afBedSheet using afIoc class AppModule { @Contribute static Void contributeRoutes(OrderedConfig conf) { conf.add(Route(`/hello/**`, HelloPage#hello)) } } class HelloPage { Text hello(Str n
using afBedSheet
using afIoc
class AppModule {
@Contribute
static Void contributeRoutes(OrderedConfig conf) {
conf.add(Route(`/hello/**`, HelloPage#hello))
}
}
class HelloPage {
Text hello(Str name, Int iq := 666) {
return Text.fromPlain("Hello! I'm $name and I have an IQ of $iq!")
}
}
我的build.fan如下所示:
using build
class Build : BuildPod {
new make() {
podName = "mt"
summary = "TODO write a description here"
depends = ["sys 1.0+", "afBedSheet 1.0.16+", "afIoc 1.4.6+"]
srcDirs = [`fan/`, `test/`]
}
}
当我运行命令时
fan afBedSheet mt::AppModule 12345
…这是我得到的错误:
C:\dev\mt2\fan>fan afBedSheet mt::AppModule 12345
[08:49:36 02-Nov-13] [info] [afBedSheet] Starting BedSheet WebApp 'mt::AppModule' on port 12345
[08:49:36 02-Nov-13] [info] [web] WispService started on port 12345
[08:49:36 02-Nov-13] [info] [afBedSheet] Found mod 'mt::AppModule'
[08:49:36 02-Nov-13] [info] [afIoc] Adding module definition for mt::AppModule
[08:49:36 02-Nov-13] [info] [afIoc] Adding module definition for afBedSheet::BedSheetModule
afIoc::IocErr: Service does not exist for Type 'afIocConfig::FactoryDefaults' defined in contribution method afBedSheet::BedSheetModule.contributeFactoryDefaults.
Ioc Operation Trace:
[ 1] Building IoC Registry
[ 2] Validating contribution definitions
Stack Trace:
at fan.afIoc.IocErr.make(Errs.fan:15)
at fan.afIoc.Utils.stackTraceFilter(Utils.fan:63)
at fan.afIoc.RegistryBuilder.build(RegistryBuilder.fan:112)
at fan.afBedSheet.BedSheetWebMod.onStart(BedSheetWebMod.fan:119)
at fan.wisp.WispService.onStart(WispService.fan:72)
at fan.sys.Service$.start(Service$.java:205)
at fan.wisp.WispService.start(WispService.fan:21)
at fan.afBedSheet.Main$startServices$3.doCall(Main.fan:54)
at fan.afBedSheet.Main$startServices$3.call(Main.fan:54)
at fan.sys.List.each(List.java:555)
at fan.afBedSheet.Main.startServices(Main.fan:54)
at fan.afBedSheet.Main.run(Main.fan:48)
at fan.util.AbstractMain.main(AbstractMain.fan:370)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fan.sys.Method.invoke(Method.java:559)
at fan.sys.Method$MethodFunc.callOn(Method.java:230)
at fan.sys.Method.callOn(Method.java:139)
at fanx.tools.Fan.callMain(Fan.java:175)
at fanx.tools.Fan.executeType(Fan.java:140)
at fanx.tools.Fan.execute(Fan.java:41)
at fanx.tools.Fan.run(Fan.java:298)
at fanx.tools.Fan.main(Fan.java:336)
C:\dev\mt2\fan>风扇床单mt::AppModule 12345
[08:49:36 02-11-13][info][afBedSheet]正在端口12345上启动床单Web应用程序“mt::AppModule”
[08:49:36 02-11-13][info][web]WispService已在端口12345上启动
[08:49:36 02-11-13][info][afBedSheet]找到了mod'mt::AppModule'
[08:49:36 02-11-13][info][afIoc]为mt::AppModule添加模块定义
[08:49:36 02-11-13][info][afIoc]为afBedSheet添加模块定义::BedSheetModule
afIoc::IocErr:在贡献方法afBedSheet::BedSheetModule.contributeFactoryDefaults中定义的类型“afIocConfig::FactoryDefaults”的服务不存在。
Ioc操作跟踪:
[1]国际奥委会注册处大楼
[2]验证贡献定义
堆栈跟踪:
在fan.afIoc.IocErr.make(错误fan:15)
at fan.afIoc.Utils.stackTraceFilter(Utils.fan:63)
位于fan.afIoc.RegistryBuilder.build(RegistryBuilder.fan:112)
在风扇处。床单。床单。风扇启动(床单。风扇:119)
在fan.wisp.WispService.onStart(WispService.fan:72)
在fan.sys.Service$.start处(Service$.java:205)
在fan.wisp.WispService.start(WispService.fan:21)
在fan.afBedSheet.Main$startServices$3.doCall(Main.fan:54)
在fan.afBedSheet.Main$startServices$3.呼叫(Main.fan:54)
在fan.sys.List.each(List.java:555)
在风机处。主风机。启动服务(主风机:54)
在fan.afBedSheet.Main.run处(Main.fan:48)
位于fan.util.AbstractMain.main(AbstractMain.fan:370)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
在fan.sys.Method.invoke处(Method.java:559)
在fan.sys.Method$MethodFunc.callOn处(Method.java:230)
位于fan.sys.Method.callOn(Method.java:139)
位于fanx.tools.Fan.callMain(Fan.java:175)
位于fanx.tools.Fan.executeType(Fan.java:140)
在fanx.tools.Fan.execute(Fan.java:41)
在fanx.tools.Fan.run(Fan.java:298)
位于fanx.tools.Fan.main(Fan.java:336)
我这里缺少什么?啊,似乎IocConfig模块没有作为可传递依赖项添加,因此,
类型为'afIocConfig::FactoryDefaults'的服务不存在。
最快的修复方法是将以下内容添加到您的build.fan
:
depends = ["sys 1.0+", "afBedSheet 1.0.16+", "afIoc 1.4.6+", "afIocConfig 0+"]
meta = ["afIoc.module" : "mt::AppModule"]
也就是说,添加afIocConfig
作为依赖项,并将AppModule定义为pod meta。然后,在床单上仅填写pod名称:
这是v1.0.16版本的一个问题,当afIocConfig被拆分到它自己的pod中时,测试通过了,因为afBedSheet本身依赖于afIocConfig。哦
这应该在afBedSheet v1.1.0中解决。感谢您发布有关Fantom的问题。这是一门很棒的语言。不过,我建议你问一个问题。我知道这是暗示,但这里有些人喜欢问号。:-)我希望有人能回答,我也遇到了这个问题。谢谢你的提示。我编辑了标题,使之成为一个问题。这个问题应该在afBedSheet v1.1.0中解决
fan afBedSheet mt 12345