こんにちは。
今現在、eclipseで開発したJavaのアプリケーションをherokuにデプロイしようとしています。
具体的には、eclipseでwarをエクスポートし、warファイルをherokuにデプロイするという形です。
前提として、ローカルではしっかりと機能していることを確認しました。
Herokuにwarファイルをデプロイしたところ、DBにアクセスするとClassNotFoundExceptionがthrowされます。
そのため、/WebContent/WEB-INF/lib内にmysql-connector-java-8.0.19.jarを入れてwarファイルを生成し、再度Herokuにデプロイしたところ次のようなエラーが出ました。
Heroku
12020-02-29T04:58:22.748990+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 22020-02-29T04:58:22.754494+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8 32020-02-29T04:58:23.134391+00:00 app[web.1]: Expanding NewAccountBook.war into /app/target/tomcat.45078/webapps/expanded 42020-02-29T04:58:23.134399+00:00 app[web.1]: Adding Context for /app/target/tomcat.45078/webapps/expanded 52020-02-29T04:58:23.650283+00:00 app[web.1]: Feb 29, 2020 4:58:23 AM org.apache.coyote.AbstractProtocol init 62020-02-29T04:58:23.650300+00:00 app[web.1]: INFO: Initializing ProtocolHandler ["http-nio-45078"] 72020-02-29T04:58:23.700913+00:00 app[web.1]: Feb 29, 2020 4:58:23 AM org.apache.catalina.core.StandardService startInternal 82020-02-29T04:58:23.700915+00:00 app[web.1]: INFO: Starting service [Tomcat] 92020-02-29T04:58:23.702116+00:00 app[web.1]: Feb 29, 2020 4:58:23 AM org.apache.catalina.core.StandardEngine startInternal 102020-02-29T04:58:23.702117+00:00 app[web.1]: INFO: Starting Servlet engine: [Apache Tomcat/9.0.30] 112020-02-29T04:58:23.807115+00:00 app[web.1]: Feb 29, 2020 4:58:23 AM org.apache.catalina.core.ContainerBase startInternal 122020-02-29T04:58:23.807118+00:00 app[web.1]: SEVERE: A child container failed during start 132020-02-29T04:58:23.807118+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6e1567f1] 142020-02-29T04:58:23.807119+00:00 app[web.1]: at java.util.concurrent.FutureTask.report(FutureTask.java:122) 152020-02-29T04:58:23.807119+00:00 app[web.1]: at java.util.concurrent.FutureTask.get(FutureTask.java:192) 162020-02-29T04:58:23.807120+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) 172020-02-29T04:58:23.807120+00:00 app[web.1]: at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841) 182020-02-29T04:58:23.807121+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 192020-02-29T04:58:23.807121+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) 202020-02-29T04:58:23.807122+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) 212020-02-29T04:58:23.807122+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 222020-02-29T04:58:23.807123+00:00 app[web.1]: at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 232020-02-29T04:58:23.807123+00:00 app[web.1]: at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 242020-02-29T04:58:23.807124+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) 252020-02-29T04:58:23.807124+00:00 app[web.1]: at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 262020-02-29T04:58:23.807124+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 272020-02-29T04:58:23.807125+00:00 app[web.1]: at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) 282020-02-29T04:58:23.807125+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 292020-02-29T04:58:23.807125+00:00 app[web.1]: at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) 302020-02-29T04:58:23.807126+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 312020-02-29T04:58:23.807126+00:00 app[web.1]: at org.apache.catalina.startup.Tomcat.start(Tomcat.java:459) 322020-02-29T04:58:23.807126+00:00 app[web.1]: at webapp.runner.launch.Main.main(Main.java:289) 332020-02-29T04:58:23.807129+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6e1567f1] 342020-02-29T04:58:23.807130+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) 35… 362020-02-29T04:58:23.807136+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file 37… 382020-02-29T04:58:23.807138+00:00 app[web.1]: Caused by: java.util.zip.ZipException: error in opening zip file 39… 402020-02-29T04:58:23.809457+00:00 app[web.1]: Feb 29, 2020 4:58:23 AM org.apache.catalina.core.ContainerBase startInternal 412020-02-29T04:58:23.809458+00:00 app[web.1]: SEVERE: A child container failed during start 422020-02-29T04:58:23.809458+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during start 43… 442020-02-29T04:58:23.809464+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: A child container failed during start 45… 462020-02-29T04:58:23.809470+00:00 app[web.1]: Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6e1567f1] 47… 482020-02-29T04:58:23.809472+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@6e1567f1] 49… 502020-02-29T04:58:23.809479+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file 51…
###まとめ
まとめると、次のようになります。
ClassNotFoundExceptionを解決するために、mysql-connectorを/WEB-ING/lib内に入れると、エラーが出る。
入れないと、webサイトは正常に機能しているように見えるが、DBアクセスの処理をしようとするとClassNotFoundExceptionが投げられます。
mysql-connectorをlib内に入れてwarファイルを作成すると何か不都合があるのでしょうか。
どなたか教えていただけないでしょうか。。。
###Daoのコード
Java
1public class AccountDao { 2 Connection con = null; 3 PreparedStatement ps = null; 4 ResultSet rs = null; 5 final String URL = "urlを記載"; 6 final String USER = "user名を記載"; 7 final String PASS = "パスワードを記載"; 8 public void insertAccount(Account account){ 9 try { 10 // mySQLの接続 11 Class.forName("com.mysql.cj.jdbc.Driver"); 12 con = DriverManager.getConnection(URL, USER, PASS); 13 // 処理
###mysql-connectorを格納したwarファイル
warの中身
1META-INF/MANIFEST.MF 2META-INF/ 3WEB-INF/ 4WEB-INF/classes/ 5WEB-INF/classes/dao/ 6WEB-INF/classes/dao/AccountDao.class 7WEB-INF/classes/dao/LoginDao.class 8WEB-INF/classes/entity/ 9WEB-INF/classes/entity/Account.class 10WEB-INF/classes/entity/AccountList.class 11WEB-INF/classes/entity/Login.class 12WEB-INF/classes/entity/YearMonth.class 13WEB-INF/classes/service/ 14WEB-INF/classes/service/DeleteAccount.class 15WEB-INF/classes/service/DetailAccount.class 16WEB-INF/classes/service/InsertAccount.class 17WEB-INF/classes/service/LoginAccount.class 18WEB-INF/classes/service/LoginNewAccount.class 19WEB-INF/classes/service/LogoutAccount.class 20WEB-INF/classes/service/ModifyAccount.class 21WEB-INF/classes/service/ShowAccount.class 22WEB-INF/classes/service/ShowAccountNextMonth.class 23WEB-INF/classes/service/ShowAccountPreviousMonth.class 24WEB-INF/lib/ 25WEB-INF/lib/jstl-api-1.2.jar 26WEB-INF/lib/jstl-impl-1.2.jar 27WEB-INF/lib/mysql-connector-java-8.0.19.jar 28detail.jsp 29index.jsp 30newAccount.jsp 31register.jsp 32show.jsp
以上、よろしくお願いします。
あなたの回答
tips
プレビュー