java ClassNotFoundException:当尝试加载InitialContext时,可以使用org.jboss.naming.remote.client.InitialContextFactory

sqxo8psd  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(101)

我正在测试(使用JUnit)一个REST服务,为了确保一切按预期进行,我需要使用一些EJB方法。说,我有:

  • 被测试的类,这里不感兴趣;
  • 测试类
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-remoting://localhost:8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false jboss.naming.client.ejb.context=true

remote.connection.default.username=admin
remote.connection.default.password=admin
  • 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:无法示例化类:org.jboss.naming.remote.client.InitialContextFactory
[Root异常为java.lang.ClassNotFoundException:org.jboss.naming.remote.client.InitialContextFactory]
这里和网上的其他类似问题建议将jboss-client添加到CLASSPATH,但我已经在我的发行版中查看了jboss-client附近的README,它说不要这样做,而是创建一个gradle依赖项。所以我做了。
还有一件奇怪的事:我得到了代码和属性从测试到另一个模块在同一个项目(由另一个编码器编写)。我试着运行这些测试,它们按预期工作。我复制了所有的东西,甚至更多(gradle依赖),但得到了这个异常。
我已经试着简化代码来说明,我可能遗漏了一些重要的东西。如果需要,我可以复制更多的设置和代码部分。

oknwwptz

oknwwptz1#

我把对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',它开始工作了。不确定是否有帮助。

相关问题