NutzCN Logo
问答 ioc 加载的时候 怎么会失败
发布于 2640天前 作者 Rekoe 1543 次浏览 复制 上一个帖子 下一个帖子
标签:

js 文件

var ioc = {
	conf : {
		type : "org.nutz.ioc.impl.PropertiesProxy",
		fields : {
			paths : [ "custom/" ]
		}
	},
	zMongo : {
		args : [ {
			java : "$conf.get('mongo.host')"
		}, {
			java : "$conf.getInt('mongo.port')"
		} ],
		factory : "org.nutz.mongo.ZMongo#me"
	},
	zMoDB : {
		args : [ {
			java : "$conf.get('mongo.db')"
		} ],
		factory : "$zMongo#db"
	}
};

实在没看出是哪里的问题
启动报错

Exception in thread "main" org.nutz.ioc.IocException: IocBean[zMoDB -> zMongo] For object [zMongo] - type:[]
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:218)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
	at org.nutz.ioc.impl.ObjectMakerImpl$1.born(ObjectMakerImpl.java:88)
	at org.nutz.ioc.weaver.DefaultWeaver.born(DefaultWeaver.java:67)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:114)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:146)
	at com.anawin.tools.IocProvider.me(IocProvider.java:50)
	at com.anawin.tools.IocProvider.main(IocProvider.java:82)
Caused by: java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:49)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:36)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	... 9 more
14 回复

某个老版本的bug.

触发条件是某个地方的@Inject, 属性名称跟bean的名称对不上, 所以需要遍历IocObject, 然后上述ioc js没有声明type,触发NPE

更新新版, 或补全type,或者找出@Inject所在的属性,改一下名字

话说 我直接调用这个 会报错 还没有扫描别的IocBean呢

ioc.get(ZMoDB.class)

刚测试了一下 我在服务器启动的时候调用了下

ioc.get(ZMongo.class)

这个就不报那个错误了!

不诡异,那是已经fix的bug

@wendal 我现在用的是最新的1.r.63-SNAPSHOT

那就报issue吧

@wendal
发现问题了 一个类中 如果只写

	@Inject
	private ZMoDB zMoDB;

注解不写

	@Inject
	private ZMongo zMongo;

注解就会报这个错误

不知道了, 得弄点代码重现一下

我貌似明白了

如果一个bean A的factory是另外一个bean B, 然后bean B也是也是通过factory构建,就出这个问题

你来报个issue吧?

添加回复
请先登陆
回到顶部