Nacos Server启动失败:无法构建dumpservice bean:找不到Da java

71 篇文章 ¥59.90 ¥99.00
文章介绍了在Nacos Server启动时遇到的'无法构建dumpservice bean:找不到Da java'错误,分析了该问题可能的原因,包括Nacos版本、依赖项配置、配置文件设置等,并给出了检查和解决的步骤,如更新版本、检查依赖、配置文件清理缓存和重新安装。同时,建议在问题无法解决时向Nacos社区求助。

Nacos Server启动失败:无法构建dumpservice bean:找不到Da java

在开发和部署应用程序时,我们通常会遇到各种各样的错误和异常。其中之一是Nacos Server启动失败并显示了一个错误消息:“Nacos Server did not start because dumpservice bean construction failure: No Da java”。这个问题可能会导致我们无法成功启动Nacos Server,并阻碍我们继续进行应用程序的开发和测试。

首先,让我们了解一下Nacos是什么以及它在应用程序开发中的作用。Nacos是一个开源的分布式系统配置和服务发现框架,它可以帮助我们管理和配置微服务的相关信息。它提供了强大的服务注册、发现和配置管理功能,使得我们可以更方便地构建和部署分布式应用程序。

接下来,我们将解决Nacos Server启动失败的问题。根据错误消息,“No Da java”,我们可以猜测问题可能与“Da java”相关。这可能是指某个类或组件没有正确配置或找不到。

为了解决这个问题,我们需要检查以下几个方面:

  1. 检查Nacos Server的版本:确保我们使用的是最新的稳定版本,并且不要使用已知存在问题的旧版本。可以从Nacos官方网站下载最新的可用版本。

  2. 检查依赖项:查看我们的应用程序的依赖项是否正确配置,并且没有遗漏或冲突的依赖项。特别注意与Nacos相关的所有依赖项,确保它们的版本与Nacos Server版本兼容。

  3. 检查配置文件:查看Nacos Server的配置文件,确保所有必需的配置项都正确设置。特别关注与“Da java

2025-10-09 11:07:53.939 [reactor-http-nio-4] DEBUG reactor.netty.http.server.HttpServerOperations - [bb944cbc, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23925] New http connection, requesting read 2025-10-09 11:07:53.939 [reactor-http-nio-4] DEBUG reactor.netty.transport.TransportConfig - [bb944cbc, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23925] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)} 2025-10-09 11:07:53.939 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServerOperations - [aba97320, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] New http connection, requesting read 2025-10-09 11:07:53.939 [reactor-http-nio-5] DEBUG reactor.netty.transport.TransportConfig - [aba97320, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)} 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServerOperations - [aba97320, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Increasing pending responses, now 1 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServer - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@ac981ed 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [aba97320-2] HTTP POST "/asn/pack/export" 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerMapping - [aba97320-2] Mapped to com.hvlink.controller.AsnPackController#exportLabels(AsnPackExportParam) 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [aba97320-2] Content-Type:application/json 2025-10-09 11:07:53.943 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [aba97320-2] 0..1 [com.hvlink.entity.param.asn.AsnPackExportParam] 2025-10-09 11:07:53.945 [reactor-http-nio-5] DEBUG reactor.netty.channel.FluxReceive - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] [terminated=false, cancelled=false, pending=0, error=null]: subscribing inbound receiver 2025-10-09 11:07:53.945 [reactor-http-nio-5] DEBUG o.s.http.codec.json.Jackson2JsonDecoder - [aba97320-2] Decoded [AsnPackExportParam(ids=[6, 7, 8], exportType=B)] 2025-10-09 11:07:53.945 [reactor-http-nio-5] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 2025-10-09 11:07:53.945 [reactor-http-nio-5] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@a03da01] was not registered for synchronization because synchronization is not active 2025-10-09 11:07:53.945 [reactor-http-nio-5] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource 2025-10-09 11:07:54.073 [reactor-http-nio-5] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: fb243cbd-60d9-47e4-af78-65165e60024b] will not be managed by Spring 2025-10-09 11:07:54.073 [reactor-http-nio-5] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - ==> Preparing: SELECT l.id, l.asn_no as asnNo, l.factory_code as factoryCode, (SELECT TOP 1 factory_name FROM tm_factory WHERE factory_code = l.factory_code) as factoryName, l.warehouse_code as warehouseCode, (SELECT TOP 1 warehouse_name FROM tm_warehouse WHERE warehouse_code = l.warehouse_code) as warehouseName, ad.order_no as orderNo, l.part_code as partCode, l.part_desc as partDesc, l.production_batch as productionBatch, l.case_code as caseCode, l.pack_quantity as packQuantity, l.quantity as quantity, l.supplier_code as supplierCode, (SELECT TOP 1 supplier_name FROM tm_supplier WHERE supplier_code = l.supplier_code) as supplierName, l.unique_code as uniqueCode, l.remark as remark FROM tb_asn_pack l INNER JOIN tb_asn_detail ad ON l.asn_no = ad.asn_no AND l.part_code = ad.part_code AND l.factory_code = ad.factory_code AND l.warehouse_code = ad.warehouse_code AND ad.is_deleted = 0 WHERE l.is_deleted = 0 AND l.id IN ( ? , ? , ? ) 2025-10-09 11:07:54.073 [reactor-http-nio-5] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - ==> Parameters: 6(Integer), 7(Integer), 8(Integer) 2025-10-09 11:07:54.135 [reactor-http-nio-5] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - <== Total: 3 2025-10-09 11:07:54.136 [reactor-http-nio-5] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@a03da01] 2025-10-09 11:07:54.143 [reactor-http-nio-5] ERROR com.hvlink.service.impl.AsnPackServiceImpl - 标签导出失败 com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.; Original message: xref subsection not found at file pointer 126 at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:728) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:214) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:392) at com.hvlink.service.impl.AsnPackServiceImpl.generatePdfBytes(AsnPackServiceImpl.java:167) at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:104) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-09 11:07:54.143 [reactor-http-nio-5] ERROR com.hvlink.controller.AsnPackController - 标签导出失败 java.lang.RuntimeException: 标签导出失败: Rebuild failed: trailer not found.; Original message: xref subsection not found at file pointer 126 at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:315) com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) Error has been observed at the following site(s): *__Mono.error ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) *__Mono.defer ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.exportLabels(AsnPackServiceImpl.java:82) Original Stack Trace: at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-09 11:07:54.143 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerAdapter - [aba97320-2] Using @ExceptionHandler com.hvlink.exceptions.ExceptionHandle#handleException(Exception) 2025-10-09 11:07:54.146 [reactor-http-nio-5] ERROR com.hvlink.exceptions.ExceptionHandle - ===服务器内部错误== java.lang.RuntimeException: 标签导出失败: Rebuild failed: trailer not found.; Original message: xref subsection not found at file pointer 126 at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:315) com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) Error has been observed at the following site(s): *__________Mono.error ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) *__________Mono.defer ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.exportLabels(AsnPackServiceImpl.java:82) |_ Mono.onErrorResume ⇢ at com.hvlink.controller.AsnPackController.exportLabels(AsnPackController.java:61) |_ Mono.flatMap ⇢ at org.springframework.web.reactive.result.method.annotation.ResponseEntityResultHandler.handleResult(ResponseEntityResultHandler.java:132) |_ checkpoint ⇢ Handler com.hvlink.controller.AsnPackController#exportLabels(AsnPackExportParam) [DispatcherHandler] *__________Mono.error ⇢ at com.hvlink.controller.AsnPackController.lambda$exportLabels$0(AsnPackController.java:63) Original Stack Trace: at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:122) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [aba97320-2] Using 'application/json' given [*/*] and supported [application/json, application/*+json, application/x-ndjson, text/event-stream] 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [aba97320-2] 0..1 [com.hvlink.common.Result<?>] 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG o.s.http.codec.json.Jackson2JsonEncoder - [aba97320-2] Encoding [Result(status=500, msg=发现未知问题,请联系管理员!, data=null, timestamp=1759979274146)] 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServerOperations - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Decreasing pending responses, now 0 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServerOperations - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Last HTTP packet was sent, terminating the channel 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG reactor.netty.channel.ChannelOperations - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] [HttpServer] Channel inbound receiver cancelled (operation cancelled). 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [aba97320-2] Completed 500 INTERNAL_SERVER_ERROR 2025-10-09 11:07:54.146 [reactor-http-nio-5] DEBUG reactor.netty.http.server.HttpServerOperations - [aba97320-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:23926] Last HTTP response frame package com.hvlink.service.impl; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hvlink.entity.dto.asn.AsnPackDTO; import com.hvlink.entity.param.asn.AsnPackExportParam; import com.hvlink.entity.param.asn.AsnPackLabelParam; import com.hvlink.entity.po.asn.AsnPackPO; import com.hvlink.entity.vo.asn.AsnPackLabelVO; import com.hvlink.mapper.asn.AsnPackMapper; import com.hvlink.pagination.PageResult; import com.hvlink.service.IAsnPackService; import com.hvlink.utils.BeanCopyUtils; import com.hvlink.utils.QRCodeUtils; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * ASN包装信息(AsnPack)表服务实现类 * * @author sunzhuang * @since 2025-09-23 16:39:02 */ @Slf4j @RequiredArgsConstructor @Service("asnPackService") public class AsnPackServiceImpl extends ServiceImpl<AsnPackMapper, AsnPackPO> implements IAsnPackService { private final AsnPackMapper asnPackMapper; /** * 查询标签信息 * * @param asnPackLabelParam 请求参数 * @return 查询结果 */ @Override public PageResult<AsnPackLabelVO> queryPage(AsnPackLabelParam asnPackLabelParam) { // 查询标签数据 Page<AsnPackDTO> page = new Page<>(asnPackLabelParam.getPageIndex(), asnPackLabelParam.getPageSize()); Page<AsnPackDTO> dtoPage = asnPackMapper.queryLabelPage(page, asnPackLabelParam); // 转换 DTO 到 VO List<AsnPackLabelVO> voList = Collections.emptyList(); if (!CollectionUtils.isEmpty(dtoPage.getRecords())) { voList = dtoPage.getRecords().stream() .map(dto -> BeanCopyUtils.copyBean(dto, AsnPackLabelVO.class)) .collect(Collectors.toList()); } // 构建分页结果 PageResult<AsnPackLabelVO> result = new PageResult<>(); result.setRecords(voList); result.setTotal(dtoPage.getTotal()); result.setPageIndex(asnPackLabelParam.getPageIndex()); result.setPageSize(asnPackLabelParam.getPageSize()); return result; } @Override public Mono<ResponseEntity<Resource>> exportLabels(AsnPackExportParam exportParam) { return Mono.defer(() -> { try { // 参数验证 if (exportParam == null || exportParam.getIds() == null || exportParam.getIds().isEmpty()) { return Mono.error(new IllegalArgumentException("导出参数或ID列表不能为空")); } // 查询导出数据 List<AsnPackDTO> exportData = asnPackMapper.selectByIds(exportParam.getIds()); if (exportData.isEmpty()) { return Mono.error(new RuntimeException("未到导出数据")); } // 验证导出类型 if (!isValidExportType(exportParam.getExportType())) { return Mono.error(new IllegalArgumentException("不支持的导出类型: " + exportParam.getExportType())); } // 根据导出类型选择模板 String templatePath = getTemplatePath(exportParam.getExportType()); // 生成PDF字节数组 byte[] pdfBytes = generatePdfBytes(exportData, exportParam.getExportType(), templatePath); // 创建资源 Resource resource = new ByteArrayResource(pdfBytes); // 设置响应头 String fileName = buildFileName(exportParam.getExportType()); ResponseEntity<Resource> responseEntity = ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName) .contentType(MediaType.APPLICATION_PDF) .contentLength(pdfBytes.length) .body(resource); return Mono.just(responseEntity); } catch (Exception e) { log.error("标签导出失败", e); return Mono.error(new RuntimeException("标签导出失败: " + e.getMessage())); } }); } private String getTemplatePath(String exportType) { switch (exportType.toUpperCase()) { case "P": return "static/templates/P.pdf"; // 托标签模板 case "C": return "static/templates/C.pdf"; // 箱标签模板 case "B": return "static/templates/B.pdf"; // 包标签模板 default: throw new IllegalArgumentException("不支持的导出类型: " + exportType); } } private boolean isValidExportType(String exportType) { if (exportType == null) return false; String type = exportType.toUpperCase(); return type.equals("P") || type.equals("C") || type.equals("B"); } private String buildFileName(String exportType) { String typeName = ""; switch (exportType.toUpperCase()) { case "P": typeName = "托标签"; break; case "C": typeName = "箱标签"; break; case "B": typeName = "包标签"; break; default: typeName = "标签"; } return typeName + "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".pdf"; } private byte[] generatePdfBytes(List<AsnPackDTO> data, String exportType, String templatePath) throws Exception { ClassPathResource templateResource = new ClassPathResource(templatePath); if (!templateResource.exists()) { throw new RuntimeException("模板文件不存在: " + templatePath); } try (InputStream templateStream = templateResource.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { // 创建PdfReader读取模板 PdfReader reader = new PdfReader(templateStream); // 创建PdfStamper用于填充数据 PdfStamper stamper = new PdfStamper(reader, outputStream); // 获取表单字段 AcroFields form = stamper.getAcroFields(); // 设置中文字体支持 BaseFont baseFont = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED ); ArrayList<BaseFont> fontList = new ArrayList<>(); fontList.add(baseFont); form.setSubstitutionFonts(fontList); // 为每个数据项创建单独的PDF页面 for (int i = 0; i < data.size(); i++) { AsnPackDTO item = data.get(i); // 如果是第一个项目,使用当前页面;否则添加新页面 if (i > 0) { stamper.insertPage(reader.getNumberOfPages() + 1, reader.getPageSize(1)); } // 填充表单字段 fillFormFields(form, item, exportType); // 添加二维码 addQRCode(stamper, form, item, exportType); // 如果还有下一个项目,为下一个项目重置表单 if (i < data.size() - 1) { // 重置表单字段为空,为下一页做准备 Map<String, AcroFields.Item> formFields = form.getFields(); for (String fieldName : formFields.keySet()) { form.setField(fieldName, ""); } } } // 扁平化表单(使填充的数据不可编辑) stamper.setFormFlattening(true); // 关闭资源 stamper.close(); reader.close(); return outputStream.toByteArray(); } } private void fillFormFields(AcroFields form, AsnPackDTO item, String exportType) throws Exception { Map<String, String> fieldValues = buildFieldValues(item, exportType); log.info("要填充的数据: {}", fieldValues); // 获取所有表单字段 Map<String, AcroFields.Item> formFields = form.getFields(); // 填充有数据的字段 for (Map.Entry<String, String> entry : fieldValues.entrySet()) { String fieldName = entry.getKey(); String fieldValue = entry.getValue(); if (formFields.containsKey(fieldName)) { if (StringUtils.hasText(fieldValue)) { try { form.setField(fieldName, fieldValue); log.info("成功填充字段: {} = {}", fieldName, fieldValue); } catch (Exception e) { log.error("填充字段失败: {}, 值: {}", fieldName, fieldValue, e); // 尝试使用另一种方式设置字段值 try { form.setFieldProperty(fieldName, "text", fieldValue, null); } catch (Exception ex) { log.error("备用填充方式也失败: {}", fieldName, ex); } } } else { log.warn("字段值为空: {}", fieldName); form.setField(fieldName, ""); // 设置为空字符串 } } else { log.warn("未到表单字段: {}", fieldName); } } // 确保所有表单字段都有值(为空字段设置空值) for (String fieldName : formFields.keySet()) { if (!fieldValues.containsKey(fieldName)) { form.setField(fieldName, ""); log.debug("为空字段设置默认值: {}", fieldName); } } } private Map<String, String> buildFieldValues(AsnPackDTO item, String exportType) { Map<String, String> values = new HashMap<>(); // 公共字段 values.put("part_desc", item.getPartDesc()); values.put("part_code", item.getPartCode()); values.put("supplier_name", item.getSupplierName()); values.put("supplier_code", item.getSupplierCode()); values.put("order_no", item.getAsnNo()); values.put("production_batch", item.getProductionBatch()); values.put("case_code", generateCaseCode(item, exportType)); values.put("remark", item.getRemark()); // 数量相关字段 switch (exportType.toUpperCase()) { case "P": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("P", item.getSupplierCode())); values.put("master_label", "MASTER LABEL " + item.getWarehouseCode()); break; case "C": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("C", item.getSupplierCode())); break; case "B": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("B", item.getSupplierCode())); break; } return values; } private String generateCaseCode(AsnPackDTO item, String exportType) { switch (exportType.toUpperCase()) { case "P": return "1/1"; // X/Y格式 case "C": return "1/5-1"; // X/Y-Z格式 case "B": return "1/10-C-1"; // X/Y-C-Z格式 default: return item.getCaseCode(); } } private String generateUniqueCode(String prefix, String supplierCode) { SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd"); String dateStr = sdf.format(new Date()); String sequence = String.format("%06d", System.currentTimeMillis() % 1000000); return prefix + supplierCode + dateStr + sequence; } private String formatQuantity(Double quantity) { return quantity != null ? String.valueOf(quantity) : "0"; } private void addQRCode(PdfStamper stamper, AcroFields form, AsnPackDTO item, String exportType) throws Exception { try { String uniqueCode = generateUniqueCode( exportType.equals("P") ? "P" : exportType.equals("C") ? "C" : "B", item.getSupplierCode() ); // 生成二维码 ByteArrayOutputStream qrCodeStream = QRCodeUtils.generateQRCode(uniqueCode, 100, 100); Image qrCodeImage = Image.getInstance(qrCodeStream.toByteArray()); // 获取字段位置 List<AcroFields.FieldPosition> fieldPositions = form.getFieldPositions("QRcode"); if (fieldPositions == null || fieldPositions.isEmpty()) { log.warn("未到 QRcode 字段的位置信息"); return; } AcroFields.FieldPosition position = fieldPositions.get(0); int pageNo = position.page; Rectangle rect = position.position; PdfContentByte canvas = stamper.getOverContent(pageNo); // 使用上层绘制,避免干扰底层 qrCodeImage.setAbsolutePosition(rect.getLeft(), rect.getBottom()); qrCodeImage.scaleToFit(rect.getWidth(), rect.getHeight()); canvas.addImage(qrCodeImage); } catch (Exception e) { log.error("添加二维码失败", e); throw e; // 显式抛出便于调试 } } }
最新发布
10-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值