我正在尝试Guice。我做了一个简单的例子,它与Guice Getting Started手册中的例子非常相似。
但它有一段时间不起作用并说:
无法找到合适的构造函数 在mypack.ServiceUser中。课程必须 有一个(只有一个) 用@Inject或注释构造函数 一个零参数的构造函数 不是私人的。在 mypack.ServiceUser.class(ServiceUser.java:14) 找到mypack.ServiceUser
问题在于进口。我将Google Guice和TestNG都附加到了该项目中。我从org.testng.guice
包中导入了类。但是注释Inject
是从javax.inject
包中导入的。我将导入更改为org.testng.guice.Inject
后,我的程序开始工作。
但之后我又玩了一点进口。我将所有org.testng
次导入更改为com.google.inject
。该计划仍然有效。之后我回到@Inject
注释并将其导入更改为javax.inject.Inject
(因为它是我的第一个破解版本)。此后该计划仍然有效。
我再次检查了一下:来自TestNG软件包的Guice不适用于javax.inject.Inject
,而来自Google软件包(com.google.inject
)的Guice正常使用它。
为什么这么奇怪?
P.S。我使用Guice和TestNG的最新版本(guice-3.0-rc1和testng-5.14.5)。
答案 0 :(得分:1)
简短的回答是:@Guice仍然是一项正在进行中的工作,正如我们所说的那样在邮件列表上设计,所以它仍然是实验性的。
此外,您正在使用为TestNG内部使用而保留的未记录的包(org.testng.guice)。
我今天推了一个新版本,您可以在http://testng.org/beta
下载请注意,此新版本不再包含org.testng.guice,因此请确保无论何时需要Guice符号,都可以从com.google.inject导入它们。
如果您有任何其他问题/疑虑,请在testng-users邮件列表上发帖。
感谢。