用于解析器编译的ANTLR运行时版本4.7.2与当前运行时版本4.5.1不匹配。

问题描述 投票:0回答:1
我正在使用Mule EE 3.9.0,Java 8和MSSQL 8.2.2.jre。

我们的应用程序是在m子流上开发的集成框架,它使db:insert(内部使用m子EE 3.9.0 DB模块)用于某些流。

最近,我不得不在m子流中调用JAVA组件以进行数据库调用,为此我使用了MSSQL-JDBC 8.2.2.jre8版本。之后,我在运行那些旧的db:insert ule子流时遇到错误:

ANTLR Tool version 4.7.2 used for code generation does not match the current runtime version 4.5.1ANTLR Runtime version 4.7.2 used for parser compilation does not match the current runtime version 4.5.1ERROR 2020-06-03 11:09:17,946 [DispatchThread: [com.ibm.mq.jmqi.remote.impl.RemoteSession[:/4867ad1f][connectionId=414D5143514D53544D4C303120202020F4F7865E01F7FB26]]] org.mule.exception.CatchMessagingExceptionStrategy: ******************************************************************************** Message : null (java.lang.ExceptionInInitializerError). Payload Type : [B Element : ........ Element XML : <db:insert config-ref="Generic_Database_Configuration" doc:name="Database" transactionalAction="NOT_SUPPORTED"> ... Root Exception stack trace: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with UUID 59627784-3be5-417a-b9eb-8131a7286089 (expected aadb8d7e-aeef-4415-ad2b-8204d6cf042e or a legacy UUID). at org.antlr.v4.runtime.atn.ATNDeserializer.deserialize(ATNDeserializer.java:153) at com.microsoft.sqlserver.jdbc.SQLServerLexer.<clinit>(SQLServerLexer.java:424) at com.microsoft.sqlserver.jdbc.SQLServerFMTQuery.<init>(SQLServerFMTQuery.java:100) at com.microsoft.sqlserver.jdbc.SQLServerParameterMetaData.<init>(SQLServerParameterMetaData.java:347) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getParameterMetaData(SQLServerPreparedStatement.java:3100) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getParameterMetaData(SQLServerPreparedStatement.java:3111) at org.apache.commons.dbcp2.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:266) at org.apache.commons.dbcp2.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:266) at org.mule.module.db.internal.resolver.param.QueryParamTypeResolver.getParameterTypes(QueryParamTypeResolver.java:52) at org.mule.module.db.internal.resolver.param.DefaultParamTypeResolver.getParamTypesUsingMetadata(DefaultParamTypeResolver.java:74) at org.mule.module.db.internal.resolver.param.DefaultParamTypeResolver.getParameterTypes(DefaultParamTypeResolver.java:49) at org.mule.module.db.internal.domain.connection.AbstractDbConnection.getParamTypes(AbstractDbConnection.java:53) at org.mule.module.db.internal.resolver.query.ParametrizedQueryResolver.getParameterTypes(ParametrizedQueryResolver.java:68) at org.mule.module.db.internal.resolver.query.ParametrizedQueryResolver.resolve(ParametrizedQueryResolver.java:56) at org.mule.module.db.internal.processor.AbstractSingleQueryDbMessageProcessor.executeQuery(AbstractSingleQueryDbMessageProcessor.java:48) at org.mule.module.db.internal.processor.AbstractDbMessageProcessor.process(AbstractDbMessageProcessor.java:81) at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27) at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:111) at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) at org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:88) at org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:59)

请您帮忙,为什么mssql-jdbc与mule 3.9.0发生冲突,而antlr不再能够解析mule中的SQL。

我已经尝试将antlr-runtime和antlr-tool添加到POM依赖项,但是没有运气。如果我用7.0.0.jre替换mssql-jdbc版本8.2.2.jre,它可以正常工作(这是一件好事),但我需要mssql-jdbc 8.2.2.jre的某些功能。

我正在使用Mule EE 3.9.0,Java 8和MSSQL 8.2.2.jre。我们的应用程序是在m子流上开发的集成框架,该框架使db:insert(内部使用mule EE 3.9.0 DB模块)对于某些...

mule antlr antlr4 mule-esb mssql-jdbc
1个回答
0
投票
似乎在ANTLR所使用的版本中存在冲突,但是它看起来并不像来自Mule。 ule子3.9.0使用ANTLR3.5.x。该错误提到ANTLR 4.7.2和4.5.1。之间存在冲突。
© www.soinside.com 2019 - 2024. All rights reserved.