java.lang.NoClassDefFoundError: weblogic/security/

本文介绍了一种在Spring框架中配置WebLogic DataSource时遇到的NoClassDefFoundError异常,并详细记录了解决过程,包括引入必要的WebLogic JAR包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Spring 中配置了一个 WebLogic 的 Data Source,然后在 JUnit  Test 类中直接初始化加载 applicationContext.xml,当Spring Framework 初始化该 Data Source 时,出现如下的异常信息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL [file:../portalWeb/WebContent/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject
Caused by: java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)
    at org.springframework.jndi.JndiTemplate.createInitialContext(JndiTemplate.java:106)
    at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:84)
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:122)
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:147)
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:90)
    at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:101)
    at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:164)
    at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:151)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1057)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1024)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:421)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.divInstantiateSingletons(DefaultListableBeanFactory.java:270)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.test.AbstractSpringContextTests.loadContextLocations(AbstractSpringContextTests.java:130)
    at org.springframework.test.AbstractDependencyInjectionSpringContextTests.loadContextLocations(AbstractDependencyInjectionSpringContextTests.java:224)
    at org.springframework.test.AbstractSpringContextTests.getContext(AbstractSpringContextTests.java:110)
    at org.springframework.test.AbstractDependencyInjectionSpringContextTests.setUp(AbstractDependencyInjectionSpringContextTests.java:192)
    at junit.framework.TestCase.runBare(TestCase.java:125)
    at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
    at junit.framework.TestResult$1.protect(TestResult.java:106)



经 过查找分析后得知, AbstractSubject 类存在于 WebLogic Server 的 server/lib/weblogic.jar 文件中,于是首先将其直接加入到当前 project 的 build path 中,然后再一次运行 JUnit Test,一切正常。
然后从 build path 中去掉该 jar 包,直接 run 当前的 project,发现也是一切正常。

由此可见,该 weblogc.jar 文件仅仅是在 JUnit Test 的时候才能用得到,因此没有必要放置到 project 的 lib 目录中。

<May 27, 2025 10:46:20,298 AM CST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: A MultiException has 2 exceptions. They are: 1. weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. 2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.CertificateCheckService A MultiException has 2 exceptions. They are: 1. weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. 2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.CertificateCheckService at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:392) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126) Truncated. Caused By: weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. at weblogic.security.utils.SSLWLSHostnameVerifier.createHostnameVerifier(SSLWLSHostnameVerifier.java:272) at weblogic.security.utils.SSLWLSHostnameVerifier.getDefaultVerifier(SSLWLSHostnameVerifier.java:235) at weblogic.security.utils.SSLWLSHostnameVerifier.getDefaultVerifier(SSLWLSHostnameVerifier.java:204) at weblogic.security.utils.SSLWLSHostnameVerifier.<init>(SSLWLSHostnameVerifier.java:69) at weblogic.security.utils.SSLContextWrapper.<init>(SSLContextWrapper.java:101) Truncated. Caused By: java.lang.ClassNotFoundException: weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier at com.oracle.classloader.PolicyClassLoader.findClass(PolicyClassLoader.java:398) at com.oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:371) at com.oracle.classloader.weblogic.LaunchClassLoader.loadClass(LaunchClassLoader.java:55) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.Class.forName0(Native Method) Truncated.
05-28
####<Aug 13 08:22:13> <Error> <javax.enterprise.resource.webcontainer.jsf.application> <pcs01.lkm.com.cn> <MS1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <c62d9e51-de86-4b9e-be2e-a6825fb56cf3-0007d5f6> <1755044533610> <[severity-value: 8] [rid: 0] > <BEA-000000> <Error Rendering View[/engoperation/engoperation.jsf] java.lang.IllegalArgumentException: Error converting [M6] to a double value; at org.primefaces.component.inputnumber.InputNumberRenderer.format ForPlugin(InputNumberRenderer.java:311) at org.primefaces.component.inputnumber.InputNumberRenderer.encode Script(InputNumberRenderer.java:231) at org.primefaces.component.inputnumber.InputNumberRenderer.encode End(InputNumberRenderer.java:124) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:9 1) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.ja va:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeM arkup(OutputPanelRenderer.java:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeE nd(OutputPanelRenderer.java:43) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive (HtmlBasicRenderer.java:286) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(Gro upRenderer.java:90) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.renderkit.html_basic.CompositeRenderer.encodeChildren (CompositeRenderer.java:54) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 0) at org.primefaces.component.tabview.TabViewRenderer.encodeTabConte nt(TabViewRenderer.java:329) at org.primefaces.component.tabview.TabViewRenderer.encodeContents( TabViewRenderer.java:290) at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(T abViewRenderer.java:134) at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabVi ewRenderer.java:73) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 4) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback .visit(PartialViewContextImpl.java:615) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(P artialVisitContext.java:159) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1456) at org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:912 ) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIForm.visitTree(UIForm.java:355) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at com.sun.faces.context.PartialViewContextImpl.processComponents(Part ialViewContextImpl.java:400) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialVie wContextImpl.java:319) at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePa rtialViewContext.java:57) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:11 02) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderVie w(FaceletViewHandlingStrategy.java:442) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiView Handler.java:170) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerW rapper.java:132) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponse Phase.java:102) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199) at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:295) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:260) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurity Helper.java:137) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:3 53) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.ja va:81) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at com.lkm.pmi.template.CharacterEncodingFilter.doFilter(CharacterEncodi ngFilter.java:21) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilte r.java:32) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.wrapRun(WebAppServletContext.java:3866) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.run(WebAppServletContext.java:3829) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticated Subject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(Security Manager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSe curityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java: 71) at weblogic.servlet.internal.WebAppServletContext.processSecuredExecute (WebAppServletContext.java:2502) at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(We bAppServletContext.java:2351) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebA ppServletContext.java:2326) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServle tContext.java:2304) at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestI mpl.java:1779) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.jav a:1733) at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestEx ecutor.run(ContainerSupportProviderImpl.java:272) at weblogic.invocation.ComponentInvocationContextManager._runAs(Co mponentInvocationContextManager.java:352) at weblogic.invocation.ComponentInvocationContextManager.runAs(Com ponentInvocationContextManager.java:337) at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitio nUtility.java:57) at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.jav a:41) at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(Self TuningWorkManagerImpl.java:651) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420) at weblogic.work.ExecuteThread.run(ExecuteThread.java:360) Caused By: java.lang.NumberFormatException: For input string: "M6" at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(Floati ngDecimal.java:2054) at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecim al.java:110) at java.base/java.lang.Double.parseDouble(Double.java:543) at java.base/java.lang.Double.<init>(Double.java:625) at org.primefaces.component.inputnumber.InputNumberRenderer.format ForPlugin(InputNumberRenderer.java:295) at org.primefaces.component.inputnumber.InputNumberRenderer.encode Script(InputNumberRenderer.java:231) at org.primefaces.component.inputnumber.InputNumberRenderer.encode End(InputNumberRenderer.java:124) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:9 1) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.ja va:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeM arkup(OutputPanelRenderer.java:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeE nd(OutputPanelRenderer.java:43) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive (HtmlBasicRenderer.java:286) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(Gro upRenderer.java:90) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.renderkit.html_basic.CompositeRenderer.encodeChildren (CompositeRenderer.java:54) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 0) at org.primefaces.component.tabview.TabViewRenderer.encodeTabConte nt(TabViewRenderer.java:329) at org.primefaces.component.tabview.TabViewRenderer.encodeContents( TabViewRenderer.java:290) at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(T abViewRenderer.java:134) at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabVi ewRenderer.java:73) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 4) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback .visit(PartialViewContextImpl.java:615) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(P artialVisitContext.java:159) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1456) at org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:912 ) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIForm.visitTree(UIForm.java:355) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at com.sun.faces.context.PartialViewContextImpl.processComponents(Part ialViewContextImpl.java:400) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialVie wContextImpl.java:319) at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePa rtialViewContext.java:57) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:11 02) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderVie w(FaceletViewHandlingStrategy.java:442) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiView Handler.java:170) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerW rapper.java:132) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponse Phase.java:102) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199) at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:295) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:260) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurity Helper.java:137) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:3 53) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.ja va:81) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at com.lkm.pmi.template.CharacterEncodingFilter.doFilter(CharacterEncodi ngFilter.java:21) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilte r.java:32) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.wrapRun(WebAppServletContext.java:3866) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.run(WebAppServletContext.java:3829) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticated Subject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(Security Manager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSe curityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java: 71) at weblogic.servlet.internal.WebAppServletContext.processSecuredExecute (WebAppServletContext.java:2502) at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(We bAppServletContext.java:2351) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebA ppServletContext.java:2326) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServle tContext.java:2304) at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestI mpl.java:1779) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.jav a:1733) at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestEx ecutor.run(ContainerSupportProviderImpl.java:272) at weblogic.invocation.ComponentInvocationContextManager._runAs(Co mponentInvocationContextManager.java:352) at weblogic.invocation.ComponentInvocationContextManager.runAs(Com ponentInvocationContextManager.java:337) at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitio nUtility.java:57) at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.jav a:41) at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(Self TuningWorkManagerImpl.java:651) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420) at weblogic.work.ExecuteThread.run(ExecuteThread.java:360) > ####<Aug 13 08:22:13> <Error> <org.primefaces.application.exceptionhandler.PrimeExceptionHandler> <pcs01.lkm.com.cn> <MS1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <c62d9e51-de86-4b9e-be2e-a6825fb56cf3-0007d5f6> <1755044533612> <[severity-value: 8] [rid: 0] > <BEA-000000> <Error converting [M6] to a double value; java.lang.IllegalArgumentException: Error converting [M6] to a double value; at org.primefaces.component.inputnumber.InputNumberRenderer.format ForPlugin(InputNumberRenderer.java:311) at org.primefaces.component.inputnumber.InputNumberRenderer.encode Script(InputNumberRenderer.java:231) at org.primefaces.component.inputnumber.InputNumberRenderer.encode End(InputNumberRenderer.java:124) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:9 1) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.ja va:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeM arkup(OutputPanelRenderer.java:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeE nd(OutputPanelRenderer.java:43) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive (HtmlBasicRenderer.java:286) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(Gro upRenderer.java:90) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.renderkit.html_basic.CompositeRenderer.encodeChildren (CompositeRenderer.java:54) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 0) at org.primefaces.component.tabview.TabViewRenderer.encodeTabConte nt(TabViewRenderer.java:329) at org.primefaces.component.tabview.TabViewRenderer.encodeContents( TabViewRenderer.java:290) at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(T abViewRenderer.java:134) at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabVi ewRenderer.java:73) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 4) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback .visit(PartialViewContextImpl.java:615) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(P artialVisitContext.java:159) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1456) at org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:912 ) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIForm.visitTree(UIForm.java:355) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at com.sun.faces.context.PartialViewContextImpl.processComponents(Part ialViewContextImpl.java:400) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialVie wContextImpl.java:319) at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePa rtialViewContext.java:57) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:11 02) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderVie w(FaceletViewHandlingStrategy.java:442) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiView Handler.java:170) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerW rapper.java:132) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponse Phase.java:102) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199) at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:295) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:260) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurity Helper.java:137) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:3 53) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.ja va:81) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at com.lkm.pmi.template.CharacterEncodingFilter.doFilter(CharacterEncodi ngFilter.java:21) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilte r.java:32) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.wrapRun(WebAppServletContext.java:3866) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.run(WebAppServletContext.java:3829) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticated Subject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(Security Manager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSe curityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java: 71) at weblogic.servlet.internal.WebAppServletContext.processSecuredExecute (WebAppServletContext.java:2502) at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(We bAppServletContext.java:2351) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebA ppServletContext.java:2326) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServle tContext.java:2304) at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestI mpl.java:1779) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.jav a:1733) at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestEx ecutor.run(ContainerSupportProviderImpl.java:272) at weblogic.invocation.ComponentInvocationContextManager._runAs(Co mponentInvocationContextManager.java:352) at weblogic.invocation.ComponentInvocationContextManager.runAs(Com ponentInvocationContextManager.java:337) at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitio nUtility.java:57) at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.jav a:41) at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(Self TuningWorkManagerImpl.java:651) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420) at weblogic.work.ExecuteThread.run(ExecuteThread.java:360) Caused By: java.lang.NumberFormatException: For input string: "M6" at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(Floati ngDecimal.java:2054) at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecim al.java:110) at java.base/java.lang.Double.parseDouble(Double.java:543) at java.base/java.lang.Double.<init>(Double.java:625) at org.primefaces.component.inputnumber.InputNumberRenderer.format ForPlugin(InputNumberRenderer.java:295) at org.primefaces.component.inputnumber.InputNumberRenderer.encode Script(InputNumberRenderer.java:231) at org.primefaces.component.inputnumber.InputNumberRenderer.encode End(InputNumberRenderer.java:124) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:9 1) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.ja va:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeM arkup(OutputPanelRenderer.java:73) at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeE nd(OutputPanelRenderer.java:43) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive (HtmlBasicRenderer.java:286) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(Gro upRenderer.java:90) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.renderkit.html_basic.CompositeRenderer.encodeChildren (CompositeRenderer.java:54) at javax.faces.component.UIComponentBase.encodeChildren(UICompone ntBase.java:566) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 0) at org.primefaces.component.tabview.TabViewRenderer.encodeTabConte nt(TabViewRenderer.java:329) at org.primefaces.component.tabview.TabViewRenderer.encodeContents( TabViewRenderer.java:290) at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(T abViewRenderer.java:134) at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabVi ewRenderer.java:73) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBas e.java:595) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:165 4) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback .visit(PartialViewContextImpl.java:615) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(P artialVisitContext.java:159) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1456) at org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:912 ) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIForm.visitTree(UIForm.java:355) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468) at com.sun.faces.context.PartialViewContextImpl.processComponents(Part ialViewContextImpl.java:400) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialVie wContextImpl.java:319) at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePa rtialViewContext.java:57) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:11 02) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:164 7) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderVie w(FaceletViewHandlingStrategy.java:442) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiView Handler.java:170) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerW rapper.java:132) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponse Phase.java:102) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199) at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:295) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(S tubSecurityHelper.java:260) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurity Helper.java:137) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:3 53) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.ja va:81) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at com.lkm.pmi.template.CharacterEncodingFilter.doFilter(CharacterEncodi ngFilter.java:21) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilte r.java:32) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:82) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.wrapRun(WebAppServletContext.java:3866) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.run(WebAppServletContext.java:3829) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticated Subject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(Security Manager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSe curityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java: 71) at weblogic.servlet.internal.WebAppServletContext.processSecuredExecute (WebAppServletContext.java:2502) at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(We bAppServletContext.java:2351) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebA ppServletContext.java:2326) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServle tContext.java:2304) at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestI mpl.java:1779) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.jav a:1733) at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestEx ecutor.run(ContainerSupportProviderImpl.java:272) at weblogic.invocation.ComponentInvocationContextManager._runAs(Co mponentInvocationContextManager.java:352) at weblogic.invocation.ComponentInvocationContextManager.runAs(Com ponentInvocationContextManager.java:337) at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitio nUtility.java:57) at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.jav a:41) at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(Self TuningWorkManagerImpl.java:651) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420) at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)
08-14
### 问题分析 `java.lang.NoClassDefFoundError: javafx/util/Pair` 表示在运行时找不到 `javafx.util.Pair` 类。此类通常在 JavaFX 模块中提供,但在某些 JDK 发行版(如 OpenJDK)中默认不包含 JavaFX,或者在 Java 11 及以上版本中,JavaFX 已从标准 JDK 中移除,需要手动引入 [^3]。 ### 解决方案 #### 1. 使用替代类库(推荐) `javafx.util.Pair` 是一个简单的键值对容器,可以通过引入第三方库或使用自定义类来替代。 - **使用 Hutool 的 `Pair` 类**: 在 `pom.xml` 中添加 Hutool 依赖: ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.12</version> </dependency> ``` 替换原有代码中的 `javafx.util.Pair`: ```java // 原有代码 import javafx.util.Pair; // 替换为 import cn.hutool.core.lang.Pair; ``` Hutool 提供了类似功能,并且兼容性更好,适合生产环境使用 [^4]。 #### 2. 手动引入 JavaFX 模块(适用于需要完整 JavaFX 功能的场景) 如果项目确实需要使用 JavaFX 的其他功能,可以手动下载 JavaFX SDK 并在启动时指定模块路径。 - 下载地址:[JavaFX - Gluon](https://gluonhq.com/products/javafx/) - 启动命令示例: ```bash java --module-path ./javafx-sdk-19/lib --add-modules javafx.controls,javafx.fxml -jar your_app.jar ``` 此方式适用于 Java 11 及以上版本 [^3]。 #### 3. 检查 JDK 发行版差异 - **OpenJDK 与 OracleJDK 差异**:某些版本的 OracleJDK 包含 JavaFX,而 OpenJDK 不包含。如果本地使用的是 OracleJDK,而服务器使用 OpenJDK,则可能导致运行时类缺失 [^2]。 - **建议**:统一本地和服务器的 JDK 版本和发行商,避免因环境差异导致类加载失败。 #### 4. 自定义 Pair 类 如果项目中仅使用了 `Pair` 的基本功能,也可以自定义一个简单的 `Pair` 类来替代: ```java public class Pair<K, V> { private final K key; private final V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } } ``` 此方法适用于轻量级使用场景,避免引入额外依赖 [^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值