kotlin 使用easyexcel导入csv文件报没有初始化构造函数的错误
2022-12-22 17:41:35.393 ERROR 72035 --- [-1 @coroutine#4] c.f.billing.scheduler.AuditScheduler : load stack info occur exception: mgmt-api executing GET http://mgmt-api:4397/mgmt/api/v1/deployments?page=0&size=10!
2022-12-22 17:41:35.393 WARN 72035 --- [-1 @coroutine#4] c.f.billing.scheduler.AuditScheduler : load stack info from file occur exception: Not found customer info table.
2022-12-22 17:46:41.141 WARN 72035 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=5m18s4ms905µs574ns).
2022-12-22 17:46:43.156 INFO 72035 --- [TaskScheduler-1] o.apache.http.impl.execchain.RetryExec : I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://fcc-dev-consul.fastonetech.com:80: The target server failed to respond
2022-12-22 17:46:43.157 INFO 72035 --- [TaskScheduler-1] o.apache.http.impl.execchain.RetryExec : Retrying request to {}->http://fcc-dev-consul.fastonetech.com:80
2022-12-22 17:46:45.179 ERROR 72035 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
com.alibaba.excel.exception.ExcelDataConvertException: Can not instance class: com.fastonetech.billing.dto.BaiduPrePayUsageDto
at com.alibaba.excel.read.listener.ModelBuildEventListener.buildUserModel(ModelBuildEventListener.java:91) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:41) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:26) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.dealData(DefaultAnalysisEventProcessor.java:99) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.endRow(DefaultAnalysisEventProcessor.java:46) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.analysis.v07.handlers.RowTagHandler.endElement(RowTagHandler.java:66) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.analysis.v07.handlers.sax.XlsxRowHandler.endElement(XlsxRowHandler.java:91) ~[easyexcel-core-3.1.3.jar:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:618) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1728) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2899) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) ~[na:na]
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) ~[na:na]
at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.parseXmlSource(XlsxSaxAnalyser.java:239) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:260) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:124) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.ExcelReader.read(ExcelReader.java:63) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.ExcelReader.read(ExcelReader.java:53) ~[easyexcel-core-3.1.3.jar:na]
at com.alibaba.excel.read.builder.ExcelReaderSheetBuilder.doRead(ExcelReaderSheetBuilder.java:65) ~[easyexcel-core-3.1.3.jar:na]
at com.fastonetech.billing.scheduler.AuditHandler.processBaiduUsage(AuditHandler.kt:315) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditHandler.loadVendorData(AuditHandler.kt:99) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditScheduler$loadVendorData$2.invokeSuspend(AuditScheduler.kt:190) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditScheduler$loadVendorData$2.invoke(AuditScheduler.kt) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditScheduler$loadVendorData$2.invoke(AuditScheduler.kt) ~[main/:na]
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at com.fastonetech.billing.scheduler.AuditScheduler.loadVendorData(AuditScheduler.kt:185) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditScheduler.access$loadVendorData(AuditScheduler.kt:39) ~[main/:na]
at com.fastonetech.billing.scheduler.AuditScheduler$scheduled$1.invokeSuspend(AuditScheduler.kt:94) ~[main/:na]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.7.10.jar:1.7.10-release-333(1.7.10)]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[kotlinx-coroutines-core-jvm-1.6.3.jar:na]
at com.fastonetech.billing.scheduler.AuditScheduler.scheduled(AuditScheduler.kt:75) ~[main/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.21.jar:5.3.21]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.21.jar:5.3.21]
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95) ~[spring-context-5.3.21.jar:5.3.21]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: java.lang.InstantiationException: com.fastonetech.billing.dto.BaiduPrePayUsageDto
at java.base/java.lang.Class.newInstance(Class.java:639) ~[na:na]
at com.alibaba.excel.read.listener.ModelBuildEventListener.buildUserModel(ModelBuildEventListener.java:87) ~[easyexcel-core-3.1.3.jar:na]
... 55 common frames omitted
Caused by: java.lang.NoSuchMethodException: com.fastonetech.billing.dto.BaiduPrePayUsageDto.<init>()
at java.base/java.lang.Class.getConstructor0(Class.java:3585) ~[na:na]
at java.base/java.lang.Class.newInstance(Class.java:626) ~[na:na]
... 56 common frames omitted
修改的办法,需要将dto类加上初始化的值
data class BaiduPrePayUsageDto(
@ExcelProperty("账单时间")
var billingCycle: String="",
@ExcelIgnore
var recordId: String="",
@ExcelProperty("账号ID")
var vendorId: String="",
// 产品中文名,如:BCC
@ExcelProperty("产品名称")
var serviceTypeName: String="",
// 计费类型:prepay/postpay,分别表示预付费/后付费
@ExcelProperty("付费方式")
var productType: String="",
@ExcelProperty("实例id")
var resourceId: String="",
// 预付费字段,订单类型
@ExcelProperty("订单类型")
var orderTypeDesc: String="",
// 订单创建时间(预付费)/资源账单开始时间(后付费)
@ExcelProperty("服务开始时间")
var startTime: LocalDateTime= LocalDateTime.now(),
// 资源账单结束时间(后付费)
@ExcelProperty("服务结束时间")
var endTime: LocalDateTime= LocalDateTime.now(),
@ExcelProperty("配置")
var configurationCH: String="",
//单价
@ExcelProperty("单价")
var price: String="",
//单价单位
@ExcelProperty("价格单位")
var priceUnit: String="",
// 账单金额
@ExcelProperty("账单金额")
var originPrice: BigDecimal= BigDecimal.ZERO
)