0

我正在尝试使用 vert.x JDBC 客户端连接到数据库:

import io.vertx.core.AbstractVerticle;
import io.vertx.core.*;
import io.vertx.jdbcclient.JDBCConnectOptions;
import io.vertx.jdbcclient.JDBCPool;
import io.vertx.sqlclient.*;

public class MainVerticle extends AbstractVerticle {

     @Override
     public void start(Promise<Void> startPromise) throws Exception {

        JDBCPool pool = JDBCPool.pool(
                vertx,
                new JDBCConnectOptions()
                .setJdbcUrl("jdbc:sqlserver://some_ip")
                .setUser("user")
                .setPassword("password"),
                new PoolOptions().setMaxSize(16)
                );
        pool
          .query("SELECT * FROM test")
          .execute()
          .onFailure(e -> {
              System.out.println(e.toString());
          })
    }
}

这给了我结果:

java.sql.SQLException: Could not load the required implementation

我认为这是由此处的第 53 行引起的。

但是,我真的不明白那里的代码在做什么。

完整的堆栈跟踪:

java.sql.SQLException: Could not load the required implementation
    at io.agroal.api.AgroalDataSource.from(AgroalDataSource.java:53)
    at io.agroal.api.AgroalDataSource.from(AgroalDataSource.java:33)
    at io.vertx.jdbcclient.impl.AgroalCPDataSourceProvider.getDataSource(AgroalCPDataSourceProvider.java:73)
    at io.vertx.ext.jdbc.impl.JDBCClientImpl.createDataSource(JDBCClientImpl.java:274)
    at io.vertx.ext.jdbc.impl.JDBCClientImpl.lambda$getDataSourceHolder$6(JDBCClientImpl.java:256)
    at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:160)
    at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96)
    at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:158)
    at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.ClassNotFoundException: io.agroal.pool.DataSource
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    at io.agroal.api.AgroalDataSource.from(AgroalDataSource.java:49)
    ... 12 more
4

1 回答 1

0

可以通过添加来解决该错误

  implementation group: 'io.agroal', name: 'agroal-pool', version: '1.0'

build.gradle.

于 2021-11-16T14:16:16.833 回答