【问题标题】:Error with JDBC using Java 9 and JMeter 4.0使用 Java 9 和 JMeter 4.0 的 JDBC 错误
【发布时间】:2018-06-11 16:58:39
【问题描述】:

我在 JMeter 中添加了以下插件:

  • mysql-connector-java-5.1.46.jar
  • mssql-jdbc-6.4.0.jre9.jar

当我尝试使用 Java 9 通过 JMeter 4.0 执行与 [com.microsoft.sqlserver.jdbc.SQLServerDriver] 的 JDBC 连接时,我在日志中遇到问题:

    2018-04-17 17:10:54,825 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4061) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:569) ~[mssql-jdbc-6.2.1.jre8.jar:?]
    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:260) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2337) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2323) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2056) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) ~[commons-dbcp2-2.2.0.jar:2.2.0]
    at org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl.getConnection(DataSourceElement.java:326) ~[ApacheJMeter_jdbc.jar:4.0 r1823414]
    at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataSourceElement.java:191) ~[ApacheJMeter_jdbc.jar:4.0 r1823414]
    at org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:79) ~[ApacheJMeter_jdbc.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:490) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:416) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:250) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at java.lang.Thread.run(Unknown Source) [?:?]

为什么会这样?我该如何解决这个问题?

【问题讨论】:

  • 虽然我写了这个 - 找到了答案 ~[mssql-jdbc-6.2.1.jre8.jar:?] lib 文件夹中有两个插件(这个和最新的)。只需删除“jre8”就可以了!
  • 在使用 SQL Server 时,为什么还要使用 MySQL 驱动程序?
  • @Badtestor 我的回答有帮助吗?见stackoverflow.com/help/someone-answers

标签: sql-server jmeter java-9 mssql-jdbc jmeter-4.0


【解决方案1】:

这是一个 java 9 问题,不包括 jaxb jar(以及更多)

jaxb-api jar 添加到JMeter lib folder 并重新启动JMeter 以加载缺少类的jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多