Jms 从WAS迁移到liberty时发生JNDI上下文初始化错误

Jms 从WAS迁移到liberty时发生JNDI上下文初始化错误,jms,jndi,open-liberty,Jms,Jndi,Open Liberty,WsnInitialContextFactory类未找到异常。Liberty不支持此类,那么如何删除jndi.properties默认设置。此属性文件包含InitialContext的类名 属性: INITIAL_CONTEXT_FACTORY = "com.ibm.websphere.naming.WsnInitialContextFactory" CC_PROVIDER_URL = "iiop://localhost.svr.us.xxxxxxx.net:41

WsnInitialContextFactory
类未找到异常。Liberty不支持此类,那么如何删除
jndi.properties
默认设置。此属性文件包含
InitialContext
的类名

属性:

INITIAL_CONTEXT_FACTORY = "com.ibm.websphere.naming.WsnInitialContextFactory" 
CC_PROVIDER_URL = "iiop://localhost.svr.us.xxxxxxx.net:41516"
[INFO] [err] java.lang.NoClassDefFoundError: Could not initialize class com.ibm.websphere.naming.WsnInitialContextFactory
[INFO] [err]    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[INFO] [err]    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[INFO] [err]    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[INFO] [err]    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[INFO] [err]    at com.ibm.ws.jndi.internal.WASInitialContextFactoryBuilder.createInitialContextFactory(WASInitialContextFactoryBuilder.java:57)
[INFO] [err]    at [internal classes]
[INFO] [err]    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
[INFO] [err]    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
[INFO] [err]    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
[INFO] [err]    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:184)
初始上下文查找:

例外情况:

INITIAL_CONTEXT_FACTORY = "com.ibm.websphere.naming.WsnInitialContextFactory" 
CC_PROVIDER_URL = "iiop://localhost.svr.us.xxxxxxx.net:41516"
[INFO] [err] java.lang.NoClassDefFoundError: Could not initialize class com.ibm.websphere.naming.WsnInitialContextFactory
[INFO] [err]    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[INFO] [err]    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[INFO] [err]    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[INFO] [err]    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[INFO] [err]    at com.ibm.ws.jndi.internal.WASInitialContextFactoryBuilder.createInitialContextFactory(WASInitialContextFactoryBuilder.java:57)
[INFO] [err]    at [internal classes]
[INFO] [err]    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
[INFO] [err]    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
[INFO] [err]    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
[INFO] [err]    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:184)
[INFO][err]java.lang.NoClassDefFoundError:无法初始化类com.ibm.websphere.naming.WsnInitialContextFactory
[INFO][err]位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
[INFO][err]位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[INFO][err]位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[INFO][err]位于java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[信息][错误]位于com.ibm.ws.jndi.internal.WASInitialContextFactoryBuilder.createInitialContextFactory(WASInitialContextFactoryBuilder.java:57)
[信息][错误]位于[内部类]
[INFO][err]位于java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
[INFO][err]位于java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
[INFO][err]位于java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
[INFO][err]位于java.naming/javax.naming.InitialContext.(InitialContext.java:184)

Liberty不支持WsnInitialContextFactory类。您可以这样做(它也可以在WebSphereTraditional中工作):


这并不能解决问题。我仍然收到相同的错误。@Gas-您能在这里研究一下这个问题吗?在类路径上有jndi.properties文件吗?是否设置了指定InitialContextFactory配置的系统属性?我没有jndi.properties。但我已经阅读了详细信息,即使您没有在初始上下文中提供属性。它将从jndi.properties中获取此类。您是否建议为初始上下文工厂提供任何其他替代类?您必须切换到默认构造函数
new InitialContext()
,正如Alasdair所写,确保您的应用程序或类路径中没有
jndi.properties
。此代码在客户端应用程序中??你需要写更多的细节,你的应用程序是如何构造的,以及它是如何使用这部分代码的。