私のチームは$ JAVA_HOME/jre/lib/ext /フォルダにアプリケーションのcom.mysql.jdbc.Driver jarを持っていますが、 JDKに対するこの依存関係を取り除き、Gradleでより再現性の高いビルドを作成します。
私はあなたが私の依存関係の上部に見ることができます私のbuild.gradleにドライバ、コメントを追加しました:$ JAVA_HOME/JRE/libに/ EXTからjarファイルを削除する/し、それを入れた後
dependencies {
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.+'
compile group: 'com.notnoop.apns', name: 'apns', version: '1.0.0.Beta6'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21'
compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
compile group: 'net.sf.jazzy', name: 'jazzy', version: '0.5.2-rtext-1.4.1'
compile group: 'org.apache.lucene', name: 'com.springsource.org.apache.lucene.search.spell', version: '2.4.1'
compile group: 'com.rabbitmq', name: 'com.springsource.com.rabbitmq.client', version: '1.8.1'
compile group: 'com.sun.xml', name: 'com.springsource.com.sun.xml.bind', version: '2.2.0'
compile group: 'com.sun.xml.rpc', name: 'jaxrpc-impl', version: '1.1.3_01'
compile group: 'com.rabbitmq', name: 'amqp-client', version: '3.6.5'
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'com.mashape.unirest', name: 'unirest-java', version: '1.3.1'
compile fileTree(dir: 'local_lib', include: '*.jar')
}
を私はデータベースにアクセスしようとした後カタリナのログにこのエラーが表示されます:
database.BaseDbao.getConnection - We could not create any connection.
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at database.BaseDbao.getConnection(BaseDbao.java:116)
at database.UserDbao.getAuthorizedResultBean(UserDbao.java:357)
at database.Dbao.getAuthorizedResultBean(Dbao.java:3635)
at AuthServlet.doPost(AuthServlet.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at servlets.filters.servletContextFilter.doFilter(servletContextFilter.java:11)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
... 22 more
Dbao.getAuthorizationResultBean() Error - Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
LoginFailed for :suburbantest:because ::10.0.0.22
いずれの洞察力も高く評価されます!
私はTomcatの/ libフォルダ内のJARを置く場合できます。これはもちろん、Webアプリケーションを特定のTomcat JARに依存させるため、JARをextフォルダに入れるのと同じ問題があります。なぜそれはGradleを除いてどこでもうまくいくように見えますか? –
それはmysqlのjdbcドライバですか? jdkに付属のApache derby jdbcドライバがあります。正しいファイルをコピーしたことを確認してください。 –
'lib/ext'は廃止され、Java 9で削除され、stuffを入れません。また、tomcat libフォルダに置くのと同じではありません。 –