Weblogic 错误 - 无法初始化类 weblogic.jndi.Environment

Posted

技术标签:

【中文标题】Weblogic 错误 - 无法初始化类 weblogic.jndi.Environment【英文标题】:Weblogic Error - Could not initialize class weblogic.jndi.Environment 【发布时间】:2021-04-10 18:31:01 【问题描述】:

当我尝试从NetBeans 10 调试配置为使用Oracle Weblogic Server 运行的WebApp 时,我总是收到以下错误:

甚至没有复杂的步骤,我只是打开我的项目然后right-click/Debug

java.lang.NoClassDefFoundError: Could not initialize class weblogic.jndi.Environment
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
    at weblogic.management.remote.common.ClientProviderBase.makeConnection(ClientProviderBase.java:178)
    at weblogic.management.remote.common.ClientProviderBase.newJMXConnector(ClientProviderBase.java:84)
    at java.management/javax.management.remote.JMXConnectorFactory.newJMXConnector(JMXConnectorFactory.java:378)
    at org.netbeans.modules.j2ee.weblogic9.WLConnectionSupport$1.call(WLConnectionSupport.java:182)
    at org.netbeans.modules.j2ee.weblogic9.WLConnectionSupport.executeAction(WLConnectionSupport.java:112)
    at org.netbeans.modules.j2ee.weblogic9.WLConnectionSupport.executeAction(WLConnectionSupport.java:161)
    at org.netbeans.modules.j2ee.weblogic9.deploy.WLDeploymentManager.getTargets(WLDeploymentManager.java:632)
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.getTargetMap(ServerInstance.java:560)
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.getTargets(ServerInstance.java:518)
    at org.netbeans.modules.j2ee.deployment.impl.ServerString.getTargets(ServerString.java:117)
    at org.netbeans.modules.j2ee.deployment.impl.ServerString.toTargets(ServerString.java:155)
    at org.netbeans.modules.j2ee.deployment.impl.TargetServer.init(TargetServer.java:146)
    at org.netbeans.modules.j2ee.deployment.impl.TargetServer.undeploy(TargetServer.java:771)
    at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.undeploy(Deployment.java:337)
    at org.netbeans.modules.j2ee.ant.Undeploy.execute(Undeploy.java:92)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at jdk.internal.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
    at org.apache.tools.ant.Task.perform(Task.java:350)
    at org.apache.tools.ant.Target.execute(Target.java:449)
    at org.apache.tools.ant.Target.performTasks(Target.java:470)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:261)
    at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:574)
    at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:128)
BUILD FAILED (total time: 0 seconds)

我的环境是:

在 Java 10.0.2+13 上运行的 NetBeans 10 Windows 10 在 Java 1.6.0.45 上运行的 Weblogic Server 10.3.6

如何解决?

【问题讨论】:

【参考方案1】:

我决定发布这个问题是因为我花了整个上午才找到解决方案...尤其是因为java.lang.NoClassDefFoundError: Could not initialize class weblogic.jndi.Environment 发生的最常见原因是weblogic.jarwlfullclient.jar 不存在时被IDEWebAppWL 中的任何一个正确定位。

要解决此问题,只需使用 NetBeans 8.2 运行您的项目,这似乎只是 NB10 的错误。

另外,甚至不要尝试在 NB11NB12NB12.1NB12.2 上运行它。目前,Java EE plugin for those versions is discontinued,因此您甚至无法将 WL 添加到您的服务器列表中。

它在 NB10 中崩溃的原因是他们开始从中删除 Java 8 供应商功能,甚至无法将 WL 添加到 NB11 &gt; 的原因是因为 Oracle 删除了 Java 后续版本的 JDK8 功能...NB integration is not under Apache Licence 所以他们现在只是不支持它(is an issue that they refused to fix)。不过,有一点风险,它can be added manually。

【讨论】:

这很奇怪,因为堆栈跟踪中的调用类weblogic.jndi.WLInitialContextFactoryweblogic.jndi.Environment 在同一个jar 文件中。所以可能有问题,但我不确定这个解决方案是最常见的原因。 (特别是因为我也有它并且不运行 NB 而是运行 Eclipse。 它在 NB10 中崩溃的原因是他们开始从中删除 Java 8 供应商功能,我忘了指出我的答案。甚至无法将 WL 添加到 NB11 > 的原因是您在使用 JDK11 运行时发现的问题,因为 Oracle 删除了后续 Java 版本的 JDK8 功能......【参考方案2】:

对于 Eclipse IDE,我的解决方案是在客户端从 JDK11 切换到 JDK8。

【讨论】:

以上是关于Weblogic 错误 - 无法初始化类 weblogic.jndi.Environment的主要内容,如果未能解决你的问题,请参考以下文章

WebLogic 12c:无法初始化 JNDI 上下文

weblogic 与jms事例配置

weblogic与weblogic server有啥区别?

WebLogic XMLDecoder反序列化漏洞复现

漏洞通告Weblogic反序列化漏洞通告(CVE-2018-2628)

如何让 Weblogic 10 更喜欢 myApp.war:/WEB-INF/lib/ 中的罐子而不抛出 VerifyErrors?