Java ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory尝试加载InitialContext时

Java ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory尝试加载InitialContext时,java,gradle,junit,jboss,jndi,Java,Gradle,Junit,Jboss,Jndi,我正在测试(使用JUnit)rest服务,为了使舒尔的一切按预期进行,我需要使用一些EJB方法。我有: 被测试的班级,在这里不感兴趣 测试班 jndi.properties java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=http-remoting://localhost:8080 remote.connection.defau

我正在测试(使用JUnit)rest服务,为了使舒尔的一切按预期进行,我需要使用一些EJB方法。我有:

  • 被测试的班级,在这里不感兴趣
  • 测试班

  • jndi.properties

    java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=http-remoting://localhost:8080 remote.connection.default.connect.options.org.xnio.options.SASL\u POLICY\u NOANONYMOUS=false jboss.naming.client.ejb.context=true

    remote.connection.default.username=admin remote.connection.default.password=admin

  • 渐变依赖项:
    testcompilegroup:'org.wildfly',name:'wildfly ejb client bom',version:'8.2.0.Final',ext:'pom'
    testcompilegroup:'junit',name:'junit',version:'4.11'
    提供的项目(路径:':dao')
    (这是我想要从中获取ejb的模块)

但当我尝试运行测试时,它失败了,原因是
javax.naming.NoInitialContextException:无法实例化类:org.jboss.naming.remote.client.InitialContextFactory
[根异常是java.lang.ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory]

这里和网上的其他类似问题建议将jboss客户端添加到类路径中,但我在我的发行版中查看了jboss客户端附近的自述文件,它说不要这样做,而是建立一个gradle依赖关系。所以我做了

关于这一点,另一件奇怪的事情是:我从同一个项目(由另一个程序员编写)的另一个模块的测试中获得了代码和属性。我试着运行这些测试,它们按预期工作。我复制了所有的东西,甚至更多(gradledepency),但是得到了这个例外


为了举例说明,我试图简化代码,但可能遗漏了一些重要的内容。如果需要,我可以复制更多的设置和代码。

我将ejb客户端的依赖项从
testCompile组:'org.wildfly',名称:'wildfly ejb client bom',版本:'8.2.0.Final',ext:'pom'
更改为
testCompile'org.wildfly:wildfly ejb client bom:10.0.0.Final'
,并开始工作。不确定它是否有用

public class UploadServiceTest {
    private final String RemoteBeanLookupKey = "/project/dao/TaskManager!ru.project.dao.TaskManager";
    @EJB private TaskManager taskManager;

    @Before
    public void startEverythingNeeded() throws Exception {
        InitialContext ctx = null;
        Properties jndiProp = new Properties();

        InputStream testConfStream = getClass().getClassLoader().getResourceAsStream("jndi.properties");
        jndiProp.load(testConfStream);

        ctx = new InitialContext(jndiProp);

        taskManager = ((TaskManager) ctx.lookup(RemoteBeanLookupKey));
    }
    @Test 
    public void blablabla(){
    }
}