为什么';TestNG delivery的Guice可以识别@javax.inject.inject,而com.google.inject包的Guice可以识别吗?

为什么';TestNG delivery的Guice可以识别@javax.inject.inject,而com.google.inject包的Guice可以识别吗?,java,dependency-injection,annotations,guice,testng,Java,Dependency Injection,Annotations,Guice,Testng,我在找Guice。我做了一个简单的例子,与手册中的例子非常相似 但它有一段时间不起作用,说: 找不到合适的构造函数 在mypack.ServiceUser中。课程必须 有一个(并且只有一个) 用@Inject或 一个零参数构造函数,它是 不是私人的。在 mypack.ServiceUser.class(ServiceUser.java:14) 查找mypack.ServiceUser时 问题在于进口。我将GoogleGuice和TestNG都附加到该项目中。我从org.testng.guicep

我在找Guice。我做了一个简单的例子,与手册中的例子非常相似

但它有一段时间不起作用,说:

找不到合适的构造函数 在mypack.ServiceUser中。课程必须 有一个(并且只有一个) 用@Inject或 一个零参数构造函数,它是 不是私人的。在 mypack.ServiceUser.class(ServiceUser.java:14) 查找mypack.ServiceUser时

问题在于进口。我将GoogleGuice和TestNG都附加到该项目中。我从
org.testng.guice
package导入了类。但是注释
Inject
是从
javax.Inject
包导入的。在我将导入更改为
org.testng.guice.Inject
之后,我的程序开始工作

但在那之后,我又玩了一点。我将所有的
org.testng
导入更改为
com.google.inject
。这个计划仍然有效。在那之后,我返回到
@Inject
注释,并将其导入更改为
javax.Inject.Inject
(就像我第一个被破坏的版本一样)。即使在那之后,这个项目仍然有效

我又检查了一次:TestNG包中的Guice不能与
javax.inject.inject
一起工作,而google包中的Guice(
com.google.inject
)可以正常工作

为什么这么奇怪


p、 我使用的是Guice和TestNG的最新版本(Guice-3.0-rc1和TestNG-5.14.5)。

简短的回答是:@Guice仍然是一项正在进行中的工作,正如我们所说的,正在邮件列表中设计,所以它仍然是实验性的

此外,您使用的是保留给TestNG内部使用的未记录的包(org.TestNG.guice)

我今天刚推出了一个新版本,你可以在

请注意,这个新版本不再具有org.testng.guice,因此请确保无论何时需要guice符号,都可以从com.google.inject导入它们

如果您还有任何问题/顾虑,请在testng用户邮件列表上发布


谢谢。

谢谢您的解释和新版本。当我只使用com.google.inject和java.inject.inject时,会出现相同的错误。