java.lang.NoClassDefFoundError:com/google/cloud/sql/core/CoreSocketFactory

java.lang.NoClassDefFoundError:com/google/cloud/sql/core/CoreSocketFactory,java,jdbc,google-cloud-platform,socketfactory,Java,Jdbc,Google Cloud Platform,Socketfactory,当我试图运行一个通过jdbc连接到google云实例的脚本时,我总是遇到这个错误。根本不确定如何修复它: Exception in thread "main" java.lang.NoClassDefFoundError: com/google/cloud/sql/core/CoreSocketFactory at com.google.cloud.sql.postgres.SocketFactory.createSocket(SocketFactory.java:73)

当我试图运行一个通过jdbc连接到google云实例的脚本时,我总是遇到这个错误。根本不确定如何修复它:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/cloud/sql/core/CoreSocketFactory
        at com.google.cloud.sql.postgres.SocketFactory.createSocket(SocketFactory.java:73)
        at org.postgresql.core.PGStream.<init>(PGStream.java:73)
        at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:93)
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197)
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:211)
        at org.postgresql.Driver.makeConnection(Driver.java:459)
        at org.postgresql.Driver.connect(Driver.java:261)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:270)
        at App.main(App.java:12)
Caused by: java.lang.ClassNotFoundException: com.google.cloud.sql.core.CoreSocketFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 11 more
线程“main”java.lang.NoClassDefFoundError中的异常:com/google/cloud/sql/core/CoreSocketFactory 位于com.google.cloud.sql.postgres.SocketFactory.createSocket(SocketFactory.java:73) 位于org.postgresql.core.PGStream(PGStream.java:73) 位于org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:93) 位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197) 位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) 位于org.postgresql.jdbc.PgConnection.(PgConnection.java:211) 位于org.postgresql.Driver.makeConnection(Driver.java:459) 位于org.postgresql.Driver.connect(Driver.java:261) 位于java.sql.DriverManager.getConnection(DriverManager.java:664) 位于java.sql.DriverManager.getConnection(DriverManager.java:270) 位于App.main(App.java:12) 原因:java.lang.ClassNotFoundException:com.google.cloud.sql.core.CoreSocketFactory 位于java.net.URLClassLoader.findClass(URLClassLoader.java:382) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:418) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 还有11个 连接到db的脚本(“..”引用了出于隐私原因未包含的实例名称和密码):

导入java.sql.Connection;
导入java.sql.DriverManager;
公共类应用程序
{
公共静态void main(字符串参数[])
{
连接c=null;
尝试
{
Class.forName(“org.postgresql.Driver”);
c=DriverManager.getConnection(“jdbc:postgresql://?cloudSqlInstance=&socketFactory=com.google.cloud.sql.postgres.socketFactory&user=&password=”);
}
捕获(例外e)
{
e、 printStackTrace();
System.err.println(e.getClass().getName()+“:”+e.getMessage());
系统出口(0);
}
System.out.println(“已成功打开数据库”);
}
}

您试图将
socketFactory=com.google.cloud.sql.postgres.socketFactory
参数传递给JDBC连接字符串,而类
com.google.cloud.sql.core.CoreSocketFactory
在您的类路径中找不到

看起来您没有向类路径添加所需的依赖项。请参阅GCP github手册:

例如,如果您使用的是Maven,请添加此依赖项

<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>postgres-socket-factory</artifactId>
    <version>1.0.15</version>
</dependency>

com.google.cloud.sql
postgres插座厂
1.0.15

当我使用命令mvn-P jar和driver and dependenciencies clean package-DskipTests重新编译时,我得到了这个错误:“dependencies.dependency”。com.google.cloud.sql:postgres套接字工厂:1.0.15'for com.google.cloud.sql:postgres套接字工厂:1.0.15正在引用自身。@第34行,第17列我刚刚创建了一个带有此依赖项的空Spring引导项目,它已成功地用
-P jar with driver and dependencies
编译和打包,这是此工件的源代码:-当我在xml文件中使用-P jar with driver and dependenciencies运行代码时,它也不包含任何循环引用以下错误:尚未为此生成指定任何目标。必须以以下格式指定有效的生命周期阶段或目标:或:[:]:。可用的生命周期阶段包括:验证、初始化、生成源、流程源、生成资源、流程资源、编译、流程类、生成测试源、流程测试源、生成测试资源、流程测试资源、测试编译、流程测试类、测试您似乎键入了错误的命令<代码>mvn软件包适用于此。
<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>postgres-socket-factory</artifactId>
    <version>1.0.15</version>
</dependency>