apache-nifi - Apache Nifi 无法加载 MySQL 驱动程序
问题描述
我想尝试使用处理器 ConvertJSONToSQL 与 MySQL 连接,并将 mysql-connector-java-5.1.34.jar 添加到 nifi 文件夹和 DBCPConnectionPool 1.12.1 中的 lib 文件夹中
2021-02-04 13:41:07,810 WARN [Timer-Driven Process Thread-10] o.a.n.controller.tasks.ConnectableTask Administratively Yielding ConvertJSONToSQL[id=6ecb1fe7-0177-1000-ae33-4a73671a1c31] due to uncaught Exception: org.apache.nifi.controller.service.ControllerServiceDisabledException: Cannot invoke method public default java.sql.Connection org.apache.nifi.dbcp.DBCPService.getConnection(java.util.Map) throws org.apache.nifi.processor.exception.ProcessException on Controller Service with identifier 6ed1aaef-0177-1000-327b-2291fb935dc5 because the Controller Service's State is currently ENABLING
org.apache.nifi.controller.service.ControllerServiceDisabledException: Cannot invoke method public default java.sql.Connection org.apache.nifi.dbcp.DBCPService.getConnection(java.util.Map) throws org.apache.nifi.processor.exception.ProcessException on Controller Service with identifier 6ed1aaef-0177-1000-327b-2291fb935dc5 because the Controller Service's State is currently ENABLING
at org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:97)
at com.sun.proxy.$Proxy145.getConnection(Unknown Source)
at org.apache.nifi.processors.standard.ConvertJSONToSQL.lambda$onTrigger$0(ConvertJSONToSQL.java:317)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2380)
at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1908)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2378)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2361)
at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108)
at com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:62)
at org.apache.nifi.processors.standard.ConvertJSONToSQL.onTrigger(ConvertJSONToSQL.java:315)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1174)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-02-04 13:41:08,528 INFO [NiFi Web Server-24] o.a.n.c.s.StandardProcessScheduler Stopping ConvertJSONToSQL[id=6ecb1fe7-0177-1000-ae33-4a73671a1c31]
2021-02-04 13:41:08,528 INFO [NiFi Web Server-24] o.a.n.controller.StandardProcessorNode Stopping processor: ConvertJSONToSQL[id=6ecb1fe7-0177-1000-ae33-4a73671a1c31]
2021-02-04 13:41:08,528 INFO [Timer-Driven Process Thread-6] o.a.n.c.s.TimerDrivenSchedulingAgent Stopped scheduling ConvertJSONToSQL[id=6ecb1fe7-0177-1000-ae33-4a73671a1c31] to run
2021-02-04 13:41:08,591 INFO [Flow Service Tasks Thread-1] o.a.nifi.controller.StandardFlowService Saved flow controller org.apache.nifi.controller.FlowController@233d998a // Another save pending = false
2021-02-04 13:41:11,192 INFO [pool-12-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Initiating checkpoint of FlowFile Repository
2021-02-04 13:41:11,192 INFO [pool-12-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Successfully checkpointed FlowFile Repository with 21 records in 0 milliseconds
2021-02-04 13:41:24,853 ERROR [Timer-Driven Process Thread-6] o.a.n.c.s.StandardControllerServiceNode StandardControllerServiceNode[service=DBCPConnectionPool[id=6ed1aaef-0177-1000-327b-2291fb935dc5], versionedComponentId=null, processGroup=StandardProcessGroup[identifier=6ebbd937-0177-1000-c7b8-264fbb3c4621,name=CSVReaderDbWriter], active=true] Failed to invoke @OnEnabled method due to org.apache.nifi.reporting.InitializationException: Can't load Database Driver: {}
org.apache.nifi.reporting.InitializationException: Can't load Database Driver
at org.apache.nifi.dbcp.DBCPConnectionPool.getDriverClassLoader(DBCPConnectionPool.java:467)
at org.apache.nifi.dbcp.DBCPConnectionPool.onConfigured(DBCPConnectionPool.java:406)
at jdk.internal.reflect.GeneratedMethodAccessor637.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:142)
at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:130)
at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:75)
at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:52)
at org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:432)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.apache.nifi.dbcp.DBCPConnectionPool.getDriverClassLoader(DBCPConnectionPool.java:456)
... 16 common frames omitted
解决方案
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-api-changes.html
mysql驱动程序8的变化:
MySQL Connector/J 中实现 java.sql.Driver 的类的名称已从 更改com.mysql.jdbc.Driver
为com.mysql.cj.jdbc.Driver
。旧的类名已被弃用。
您正在使用 jar 库 v5.x。所以,你必须使用com.mysql.jdbc.Driver
推荐阅读
- flutter - Flutter 2.x 升级抱怨 Snapshotting a view for text form field
- r - 从R中的“月日,年”转换日期
- vuejs2 - 在 vuejs 中根据表格中的选定行切换元素
- actions-on-google - 从 Dialogflow 发布时发布到 Google 助理的状态
- reactjs - 如何使用图形 api 获取您共享的一个驱动器文件?
- python - 当我尝试从 pythonanywhere 的丛林控制台运行我的 bot 文件时,出现语法错误
- php - PHP Google 日历邀请现在显示是或否按钮
- java - Vaadin 14:在同一个 Grid 中使用两种类型的拖放
- spring-boot - Spring Boot 中的 Spring Security 混淆
- c# - 如何在数据集中将两个数据列合并为一个