質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

0回答

1239閲覧

HerokuにWarファイルをデプロイするとClassNotFoundExceptionがthrowされる

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/02/29 05:16

こんにちは。

今現在、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) 35362020-02-29T04:58:23.807136+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file 37382020-02-29T04:58:23.807138+00:00 app[web.1]: Caused by: java.util.zip.ZipException: error in opening zip file 39402020-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 43442020-02-29T04:58:23.809464+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: A child container failed during start 45462020-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] 47482020-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] 49502020-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

以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/05 11:20

jarファイル破損してね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問