java.lang.NoClassDefFoundError:com/google/cloud/sql/core/CoreSocketFactory
当我试图运行一个通过jdbc连接到google云实例的脚本时,我总是遇到这个错误。根本不确定如何修复它: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)
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>