2017-06-11 103 views
0

您好我是新來的網絡開發和想獲得activejdbc連接到雲SQL實例...我收到以下堆棧跟蹤:com.google.cloud.sql.mysql.SocketFactory ClassNotFoundException的

[ERROR] Failed to execute goal org.javalite:db-migrator-maven-plugin:1.4.11:migrate (dev_migrations) on project activeweb-simple: Execution dev_migrations of go 
al org.javalite:db-migrator-maven-plugin:1.4.11:migrate failed: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create socket fa 
ctory 'com.google.cloud.sql.mysql.SocketFactory' due to underlying exception: -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.javalite:db-migrator-maven-plugin:1.4.11:migrate (dev_migrations) on project 
activeweb-simple: Execution dev_migrations of goal org.javalite:db-migrator-maven-plugin:1.4.11:migrate failed: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransien 
tConnectionException: Could not create socket factory 'com.google.cloud.sql.mysql.SocketFactory' due to underlying exception: 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:191) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution dev_migrations of goal org.javalite:db-migrator-maven-plugin:1.4.11:migrate failed: com.m 
ysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create socket factory 'com.google.cloud.sql.mysql.SocketFactory' due to underlying ex 
ception: 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
     ... 20 more 
Caused by: org.javalite.db_migrator.MigrationException: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create socket factory 'c 
om.google.cloud.sql.mysql.SocketFactory' due to underlying exception: 
     at org.javalite.db_migrator.DbUtils.openConnection(DbUtils.java:183) 
     at org.javalite.db_migrator.maven.AbstractDbMigrationMojo.openConnection(AbstractDbMigrationMojo.java:178) 
     at org.javalite.db_migrator.maven.AbstractDbMigrationMojo.openConnection(AbstractDbMigrationMojo.java:170) 
     at org.javalite.db_migrator.maven.MigrateMojo.executeMojo(MigrateMojo.java:21) 
     at org.javalite.db_migrator.maven.AbstractDbMigrationMojo.executeCurrentConfiguration(AbstractDbMigrationMojo.java:96) 
     at org.javalite.db_migrator.maven.AbstractDbMigrationMojo.execute(AbstractDbMigrationMojo.java:80) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
     ... 21 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create socket factory 'com.google.cloud.sql.mysql.SocketFactory' due 
to underlying exception: 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
     at com.mysql.jdbc.Util.getInstance(Util.java:360) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870) 
     at com.mysql.jdbc.MysqlIO.createSocketFactory(MysqlIO.java:3194) 
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293) 
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232) 
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265) 
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064) 
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790) 
     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) 
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) 
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
     at java.sql.DriverManager.getConnection(DriverManager.java:664) 
     at java.sql.DriverManager.getConnection(DriverManager.java:247) 
     at org.javalite.db_migrator.DbUtils.openConnection(DbUtils.java:181) 
     ... 27 more 
Caused by: java.lang.ClassNotFoundException: com.google.cloud.sql.mysql.SocketFactory 
     at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:264) 
     at com.mysql.jdbc.MysqlIO.createSocketFactory(MysqlIO.java:3192) 
    ... 43 more 
在database.properties

我的連接字符串看起來是這樣的:

development.url=jdbc:mysql://google/database?cloudSqlInstance=project:location:instance&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=dbuser&password=dbuserpassword&useSSL=false 

我已經使用了相同的連接字符串與彈簧Hibernate配置有出了問題,而是想嘗試activeweb-activejdbc。爲什麼編譯器找不到該類?我在pom.xml中包含了google雲sql依賴項:

<dependency> 
     <groupId>com.google.cloud.sql</groupId> 
     <artifactId>mysql-socket-factory-connector-j-6</artifactId> 
     <version>1.0.2</version> 
    </dependency> 

回答

0

首先,您需要包含填充堆棧跟蹤。其次,如果你得到一個ClassNotFoundException,這意味着你沒有類路徑上的那個類。你需要知道班級在那裏。使用Maven依賴項插件,或者展開所有依賴的jar文件並確保您擁有該類。這裏沒有魔力:)

更新: 既然您提供了堆棧跟蹤,我發現運行migrator時會發生異常。如果您查看遷移器配置,您將看到它需要自己的類路徑。例如,這裏的示例:https://github.com/javalite/activeweb-simple/blob/master/pom.xml#L39特別列出了針對遷移程序的MySQL JDBC驅動程序,即使已經爲項目運行時配置了它也是如此。只需複製配置,然後用您的驅動程序替換MySQL驅動程序即可。

+0

嗨,感謝您的回覆,我檢查了該課程是在:「.m2 \ repository \ com \ google \ cloud \ sql \ mysql-socket-factory-connector-j-6 \ 1.0.2 \ mysql -socket-factory-connector-j-6-1.0.2.jar \ com \ google \ cloud \ sql \ mysql \「,我使用maven依賴關係,因爲這個問題最初發布了,所以我不明白爲什麼編譯器是沒有發現th類... –

+0

謝謝,沒有注意到對db-migrator的依賴,改變了它,併成功連接。 –

+0

太棒了,樂意幫忙! – ipolevoy

相關問題