JBPM 7.73 Docker镜像自定义任务依赖缺失问题求助
我基于jbpm-work-item-handler-demo项目适配到7.73.final版本,执行maven install后通过JBPM UI的Settings -> Add Custom Task上传自定义任务JAR并启用。接着在空间的Settings -> Custom Task安装该任务,通过"Add from repository"添加依赖,点击Deploy时抛出异常:
ERROR [org.kie.scanner.MavenClassLoaderResolver] (default task-30) Dependency artifact not found for: de.piu.datenhaus:addressvalidation:1.1
这个依赖正是我上传的自定义任务Work Item Handler的JAR文件。
自定义任务资产配置
[ { "name" : "DatenhausAddressSignature", "displayName" : "DatenhausAddressSignature", "category" : "addressvalidation", "description" : "", "defaultHandler" : "mvel: new de.piu.datenhaus.addressvalidation.DatenhausAddressSignatureWorkItemHandler()", "documentation" : "addressvalidation/index.html", "parameters" : { "DatenhausAddress" : new StringDataType() }, "results" : { "DatenhausAddressSignature" : new StringDataType() }, "mavenDependencies" : [ "de.piu.datenhaus:addressvalidation:1.1" ], "icon" : "DatenhausAddressSignatureWorkItemHandler.png" } ]
完整堆栈信息
12:19:59,170 INFO [io.jaegertracing.internal.reporters.RemoteReporter] (jaeger.RemoteReporter-QueueProcessor) FlushCommand is working again! 12:20:07,654 INFO [stdout] (default task-30) [WARNING] The POM for de.piu.datenhaus:addressvalidation:jar:1.1 is missing, no dependency information available 12:20:08,471 WARN [org.appformer.maven.integration.MavenRepository] (default task-30) Unable to resolve artifact: de.piu.datenhaus:addressvalidation:1.1 12:20:08,765 WARN [org.appformer.maven.integration.MavenRepository] (default task-30) Unable to resolve artifact: de.piu.datenhaus:addressvalidation:pom:1.1 12:20:08,972 WARN [org.appformer.maven.integration.MavenRepository] (default task-30) Unable to resolve artifact: de.piu.datenhaus:addressvalidation:1.1 12:20:08,972 ERROR [org.kie.scanner.MavenClassLoaderResolver] (default task-30) Dependency artifact not found for: de.piu.datenhaus:addressvalidation:1.1 12:20:09,356 WARN [io.jaegertracing.internal.reporters.RemoteReporter] (jaeger.RemoteReporter-QueueProcessor) FlushCommand execution failed! Repeated errors of this command will not be logged.: io.jaegertracing.internal.exceptions.SenderException: Failed to flush spans. at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.senders.ThriftSender.flush(ThriftSender.java:115) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.internal.reporters.RemoteReporter$FlushCommand.execute(RemoteReporter.java:160) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.internal.reporters.RemoteReporter$QueueProcessor.run(RemoteReporter.java:182) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: io.jaegertracing.internal.exceptions.SenderException: Could not send 1 spans at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.senders.UdpSender.send(UdpSender.java:85) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.senders.ThriftSender.flush(ThriftSender.java:113) ... 3 more Caused by: org.apache.thrift.transport.TTransportException: Cannot flush closed transport at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.flush(ThriftUdpTransport.java:148) at org.apache.thrift@0.13.0//org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:73) at org.apache.thrift@0.13.0//org.apache.thrift.TServiceClient.sendBaseOneway(TServiceClient.java:66) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.agent.thrift.Agent$Client.send_emitBatch(Agent.java:70) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.agent.thrift.Agent$Client.emitBatch(Agent.java:63) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.senders.UdpSender.send(UdpSender.java:83) ... 4 more Caused by: java.net.PortUnreachableException: ICMP Port Unreachable at java.base/java.net.PlainDatagramSocketImpl.send(Native Method) at java.base/java.net.DatagramSocket.send(DatagramSocket.java:695) at io.jaegertracing.jaeger@1.5.0//io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.flush(ThriftUdpTransport.java:146) ... 9 more 12:20:10,359 INFO [io.jaegertracing.internal.reporters.RemoteReporter] (jaeger.RemoteReporter-QueueProcessor) FlushCommand is working again!
操作步骤
- 适配jbpm-work-item-handler-demo项目至需求
- 通过JBPM UI上传JAR文件
- 在空间中安装自定义任务
- 在依赖项中添加该依赖
检查容器内Maven仓库的依赖文件
Docker环境下JBPM默认使用/opt/jboss/.m2/repository作为本地仓库,进入容器确认de/piu/datenhaus/addressvalidation/1.1目录存在,且包含addressvalidation-1.1.jar和对应的POM文件。若缺失,将本地构建的JAR和POM复制到该目录。核对依赖坐标一致性
确保自定义任务配置中mavenDependencies的de.piu.datenhaus:addressvalidation:1.1与JAR的实际GAV(groupId、artifactId、version)完全匹配,包括大小写。补全POM文件
堆栈提示POM缺失,需确认maven install生成了正确的POM文件,上传时将JAR和POM一同上传,或手动在容器仓库目录添加POM文件。刷新JBPM仓库索引
进入JBPM UI的Settings -> Maven Repositories,点击刷新按钮,触发系统重新扫描本地仓库依赖。手动输入依赖坐标
若"Add from repository"无法识别依赖,直接手动输入完整GAV坐标添加,规避仓库索引同步问题。
内容的提问来源于stack exchange,提问作者Carsten

