ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory当试图加载InitialContext

问题描述:

我正在测试(使用JUnit)一个休息服务,并使所有事情都按预期进行,我需要使用一些EJB方法。说,我有:ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory当试图加载InitialContext

  • 被测试的类,在这里是没有兴趣;
  • 测试类

    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(){ 
        } 
    } 
    
  • jndi.properties

    java.naming.factory.initial的= org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url的= HTTP的远程://本地主机:8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS =假 jboss.naming.client.ejb.context =真

    remote.connection.default.username =管理员 remote.connection.default.password =管理员

  • gradle这个依赖关系:testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom'testCompile group: 'junit', name: 'junit', version: '4.11'provided project(path: ':dao')(这是我希望从中获取EJB模块)。

但是,当我尝试运行测试时,出现在这里,并在网上javax.naming.NoInitialContextException: Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory]

其他类似的问题建议到JBoss的客户端添加到CLASSPATH,但是我看着附近的JBoss自述客户端在我的发行版中,它表示不会像这样操作,而是改为使用gradle依赖。所以我做了。

另一个奇怪的事情是:我从测试中获得代码和属性到同一项目中的另一个模块(由另一个编码器编写)。我试图运行这些测试,并按预期工作。我复制了一切,甚至更多(gradle依赖),但得到这个异常。

我试图简化代码为了说明,我可能有一些重要的缺失。如果需要,我可以复制一些设置和代码的部分。

我将ejb-client的依赖从testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom'更改为testCompile 'org.wildfly:wildfly-ejb-client-bom:10.0.0.Final',它开始工作。不确定它是否有帮助。