AAS10对应用web.xml的校验配置

本文介绍了在AASV10中遇到的web.xml文件部署错误,问题源于web.xml中标签库顺序不符合标准。解决方法包括调整web.xml的标签顺序或更改XML验证选项。XML验证提供了三种模式:完全(报错不部署)、解析(报错后继续部署)和无(不报错继续部署)。调整后,应用成功部署。

AASV10默认是对应用的描述文件web.xml是做严格的规范检测的,如果文件内容有问题,如标签库的顺序没有符合标准,部署时会报错,但是能够通过设置,对web.xml不校验或者检验后给出错误提示但是继续部署。

问题:部署某个应用报如下错误
Exception during lifecycle processing java.io.IOException: org.xml.sax.SAXParseException; lineNumber: 57; columnNumber: 11; Deployment descriptor file WEB-INF/web.xml in archive [report]. 元素类型为 "web-app" 的内容必须匹配

"(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping

*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?, error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?, security-role*,env-entry*,ejb-ref*,ejb-local-ref*)"。
原因分析:

可能是web.xml 标签库顺序问题 在后面部署报错,调整到 在前面部署成功。

解决方法

应用程序设置中可以对 web 应用描述文件 web.xml 解析方式进行设置,默认为“完全”,当 web.xml 文件里面的标签库的顺序不对时,会报错并且不进行部署。

XML 验证选项说明:

· 1.完全:报错并且不部署失败。

· 2.解析:报告错误,继续部署。

· 3.无:不报告错误,继续部署。

在这里插入图片描述

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/JCRM/OpenAS_6130_20240429/lib/user/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/log4j-slf4j-impl-2.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.51.B120/WEB-INF/lib/slf4j-log4j12-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.cloudcrm.jcrm.frame-0.0.1-SNAPSHOT/WEB-INF/lib/log4j-slf4j-impl-2.13.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] =============================================================================== Starting business container... com.huawei.bme.commons.uconfig.UConfigurationException: Parsing the policy file jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/com.huawei.soa.foundation.commons-6.1.00.B161.jar!/bme.basic.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-bme-3.5.20.SPC008/WEB-INF/lib/com.huawei.bme.web-3.5.20.SPC008.jar!/conf/bme.web.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-bme-3.5.20.SPC027/WEB-INF/lib/com.huawei.bme.web-3.5.20.SPC027.jar!/conf/bme.web.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-das-3.5.20.SPC008/WEB-INF/lib/com.huawei.bme.das.defaultdb-3.5.20.SPC008.jar!/conf/db.default.db.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-das-6.1.51.B120/WEB-INF/lib/com.huawei.bme.das.defaultdb-6.1.51.B120.jar!/conf/db.default.db.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/com.huawei.soa.foundation.jmx-6.1.00.B161.jar!/conf/jmx.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/com.huawei.soa.foundation.namingservice-6.1.00.B161.jar!/conf/namingservice.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/com.huawei.soa.foundation.prestatistics-6.1.00.B161.jar!/conf/prestatistics.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.00.B161/WEB-INF/lib/com.huawei.soa.foundation.trace-6.1.00.B161.jar!/conf/callchain.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.51.B120/WEB-INF/lib/com.huawei.soa.foundation.jmx-6.1.51.B120.jar!/conf/jmx.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.51.B120/WEB-INF/lib/com.huawei.soa.foundation.namingservice-6.1.51.B120.jar!/conf/namingservice.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.51.B120/WEB-INF/lib/com.huawei.soa.foundation.prestatistics-6.1.51.B120.jar!/conf/prestatistics.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-foundation-6.1.51.B120/WEB-INF/lib/com.huawei.soa.foundation.trace-6.1.51.B120.jar!/conf/callchain.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-adapter-dsf-6.1.00.B161/WEB-INF/lib/com.huawei.csc.usf.adapter.dsf-6.1.00.B161.jar!/conf/dsf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-adapter-dsf-6.1.00.B161/WEB-INF/lib/com.huawei.csc.usf.adapter.dsf-6.1.00.B161.jar!/conf/framework.dsf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-adapter-dsf-6.1.51.B120/WEB-INF/lib/com.huawei.csc.usf.adapter.dsf-6.1.51.B120.jar!/conf/dsf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-adapter-dsf-6.1.51.B120/WEB-INF/lib/com.huawei.csc.usf.adapter.dsf-6.1.51.B120.jar!/conf/framework.dsf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-framework-6.1.00.B161/WEB-INF/lib/com.huawei.csc.usf.framework-6.1.00.B161.jar!/conf/framework.usf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/appmw-usf-framework-6.1.51.B120/WEB-INF/lib/com.huawei.csc.usf.framework-6.1.51.B120.jar!/conf/framework.usf.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.jcrm.pt.brf_base-0.0.1-SNAPSHOT/WEB-INF/lib/com.huawei.bpm.integration.bme-6.1.00.B161.jar!/conf/bpm.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.jcrm.pt.brf_base-0.0.1-V6R1C51-SNAPSHOT/WEB-INF/lib/com.huawei.bpm.integration.bme-6.1.51.B120.jar!/conf/bpm.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.cloudcrm.jcrm.common-0.0.1-SNAPSHOT/WEB-INF/lib/com.huawei.cloudcrm.jcrm.common-0.0.1-SNAPSHOT.jar!/conf/uconfig/com.huawei.jcrm.pt.base.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.cloudcrm.jcrm.common-0.0.1-V6R1C51-SNAPSHOT/WEB-INF/lib/com.huawei.cloudcrm.jcrm.common-0.0.1-V6R1C51-SNAPSHOT.jar!/conf/uconfig/com.huawei.jcrm.pt.base.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.cloudcrm.jcrm.frame-0.0.1-SNAPSHOT/WEB-INF/lib/com.huawei.cloudcrm.jcrm.frame-0.0.1-SNAPSHOT.jar!/conf/uconfig/com.huawei.jcrm.base.uconfig-policy.xml, jar:file:/D:/JCRM/OpenAS_6130_20240429/webapps/com.huawei.jcrm.srv.jcrm.cars/com.huawei.cloudcrm.jcrm.frame-0.0.1-V6R1C51-SNAPSHOT/WEB-INF/lib/com.huawei.cloudcrm.jcrm.frame-0.0.1-V6R1C51-SNAPSHOT.jar!/conf/uconfig/com.huawei.jcrm.base.uconfig-policy.xml failed. <-- cvc-complex-type.2.4.a: Invalid content was found starting with element 'default'. One of '{extension, additional, merge-template}' is expected. at com.huawei.bme.commons.uconfig.UPolicyBuilder.parsePolicies(UPolicyBuilder.java:296) at com.huawei.bme.commons.uconfig.UPolicyBuilder.getPolicies(UPolicyBuilder.java:102) at com.huawei.bme.commons.uconfig.PolicyDigest.getPolicies(PolicyDigest.java:335) at com.huawei.bme.commons.uconfig.UConfigurationFactory.getPolicies(UConfigurationFactory.java:554) at com.huawei.bme.commons.uconfig.UConfigurationFactory.getPolicy(UConfigurationFactory.java:468) at com.huawei.bme.commons.uconfig.UConfigurationFactory.getDocumentConfiguration(UConfigurationFactory.java:1285) at com.huawei.bme.commons.uconfig.UConfigurationFactory.getDocumentConfiguration(UConfigurationFactory.java:1230) at com.huawei.bme.commons.uconfig.UConfigurationFactory.getDocumentConfiguration(UConfigurationFactory.java:1213) at com.huawei.bme.commons.uconfig.UConfigHelper.getDefaultDocumentConfiguration(UConfigHelper.java:105) at com.huawei.bme.container.control.config.ConfigReader.getInitConfigData(ConfigReader.java:65) at com.huawei.bme.container.control.policy.AbstractFixturePolicy.<init>(AbstractFixturePolicy.java:70) at com.huawei.bme.container.control.policy.SimpleFixturePolicy.<init>(SimpleFixturePolicy.java:27) at com.huawei.bme.container.control.ContainerControl.<init>(ContainerControl.java:38) at com.huawei.bme.container.control.ContainerContextLoaderListener.createController(ContainerContextLoaderListener.java:214) at com.huawei.bme.container.control.ContainerContextLoaderListener.contextInitialized(ContainerContextLoaderListener.java:108) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5126) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5656) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1700) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1690) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.xml.sax.SAXParseException; lineNumber: 329; columnNumber: 52; cvc-complex-type.2.4.a: Invalid content was found starting with element 'default'. One of '{extension, additional, merge-template}' is expected. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.commons.digester.Digester.parse(Digester.java:1765) at com.huawei.bme.commons.uconfig.UPolicyBuilder.parsePolicies(UPolicyBuilder.java:278) ... 23 more Closing business container... Closing container context... Container context is closed successfully! ******************************************************* * * * Business container is closed successfully! * * * *******************************************************
08-27
<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode></faultcode> <faultstring>Error at line:5 col:6 '<' expected a valid beginning name character</faultstring> <detail> <Exception>org.apache.axis2.AxisFault: Error at line:5 col:6 '<' expected a valid beginning name character at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:77) at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:197) at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:169) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:145) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) at com.dareway.framework.websecurity.WebSecurityFilter.doFilter(WebSecurityFilter.java:192) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) at com.dareway.framework.febe.FeBeFilter.doFilter(FeBeFilter.java:72) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) at com.dareway.framework.filter.EncodingFilter.doFilter(EncodingFilter.java:54) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3751) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3717) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2286) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2185) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1499) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) Caused by: javax.xml.stream.XMLStreamException: Error at line:5 col:6 '<' expected a valid beginning name character at weblogic.xml.stax.XMLStreamReaderBase.prime(XMLStreamReaderBase.java:122) at weblogic.xml.stax.XMLStreamReaderBase.setInput(XMLStreamReaderBase.java:143) at weblogic.xml.stax.XMLStreamInputFactory.createXMLStreamReader(XMLStreamInputFactory.java:321) at weblogic.xml.stax.XMLStreamInputFactory.createXMLStreamReader(XMLStreamInputFactory.java:70) at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95) at org.apache.axiom.util.stax.wrapper.WrappingXMLInputFactory.createXMLStreamReader(WrappingXMLInputFactory.java:116) at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95) at org.apache.axiom.om.util.StAXUtils$1.run(StAXUtils.java:202) at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:198) at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:64) at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:200) at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:146) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:169) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:145) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:821) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at com.dareway.framework.websecurity.WebSecurityFilter.doFilter(WebSecurityFilter.java:193) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at com.dareway.framework.febe.FeBeFilter.doFilter(FeBeFilter.java:72) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at com.dareway.framework.filter.EncodingFilter.doFilter(EncodingFilter.java:54) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3717) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2185) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1499) ... 1 more Caused by: Error at line:5 col:6 '<' expected a valid beginning name character at weblogic.xml.babel.scanner.Name.read(Name.java:33) at weblogic.xml.babel.scanner.Name.read(Name.java:20) at weblogic.xml.babel.scanner.OpenTag.read(OpenTag.java:58) at weblogic.xml.babel.scanner.Scanner.startState(Scanner.java:253) at weblogic.xml.babel.scanner.Scanner.scan(Scanner.java:180) at weblogic.xml.babel.baseparser.BaseParser.prime(BaseParser.java:279) at weblogic.xml.babel.baseparser.BaseParser.initScanner(BaseParser.java:119) at weblogic.xml.babel.baseparser.BaseParser.init(BaseParser.java:255) at weblogic.xml.babel.baseparser.BaseParser.<init>(BaseParser.java:85) at weblogic.xml.stax.XMLStreamReaderBase.prime(XMLStreamReaderBase.java:82) at weblogic.xml.stax.XMLStreamInputFactory.createXMLStreamReader(XMLStreamInputFactory.java:322) at weblogic.xml.stax.XMLStreamInputFactory.createXMLStreamReader(XMLStreamInputFactory.java:70) at org.apache.axiom.util.stax.wrapper.WrappingXMLInputFactory.createXMLStreamReader(WrappingXMLInputFactory.java:116) at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95) ... 23 more </Exception> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
07-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值