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

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

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

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

Java

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

Q&A

解決済

2回答

541閲覧

MavenのPackage後に作成したプログラムでMySQLのエラーが出る

tride

総合スコア68

MySQL

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

Java

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

0グッド

0クリップ

投稿2018/01/19 10:09

MySQLを使用したJavaプログラムをpackageすると、以下の様にMySQLのエラーがでて実行できません。
mvn compile && mvn exec:java -Dexec.mainClass=com.app.Appにてコンパイル及び実行できる事は確認できています。
pom.xmlにてMySQLはdependencyで読込できていると思うのですが、どこを直せば他PCでも動くようにできるでしょうか。
MySQLは開発環境及び実行環境のlocalhost上で構築済みで起動済みとします。

###問題点:
$ mvn package後にMySQLのエラーがでる。

###希望:
他PCにて作成したプロジェクトのJarファイルを実行できるようにした。

###環境:
Maven、Java、Mysql、Cloud9

###プロジェクト構成:
$ mvn archetype:generate -DgroupId=com.app -DartifactId=SampleProgram -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

###プログラムファイル(参考)
SampleProgram/src/main/java/com/app/App.java

###エラー内容:

プログラム開始・・ ※←System.out.printlnの実行内容 Exception in thread "main" java.lang.NoClassDefFoundError: com/mysql/jdbc/AbandonedConnectionCleanupThread at com.app.App.main(App.java:47) Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.AbandonedConnectionCleanupThread at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more

###pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.app</groupId> <artifactId>SampleProgram</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>${project.artifactId}</name> <url>http://maven.apache.org</url> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.app.App</mainClass> <addClasspath>true</addClasspath> <addExtensions>true</addExtensions> <classpathPrefix>lib</classpathPrefix> </manifest> </archive> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> </dependencies> </project>

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

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

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

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

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

guest

回答2

0

自己解決

pomに以下クラスファイルを指定(manifestEntriesの内容)した後、
target配下にディレクトリdependencyを追加、
$ mvn dependency:copy-dependencies でクラスファイルをコピーすれば
エラーはなくなりました。
ありがとうございました。

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.app.App</mainClass> <addClasspath>true</addClasspath> <classpathLayoutType>simple</classpathLayoutType> <addExtensions>true</addExtensions> <classpathPrefix>dependency</classpathPrefix> </manifest> <manifestEntries>         <ここにコピーされたクラスファイルを記入> <Class-Path>dependency/mysql-connector-java-5.1.43.jar</Class-Path> </manifestEntries> </archive> </configuration> </plugin>

投稿2018/01/25 03:25

tride

総合スコア68

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

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

0

実行時にもクラスパスは必要です。

投稿2018/01/19 12:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tride

2018/01/19 12:34

ご回答ありがとうございます。 実行時にもクラスパスが必要とは具体的にどういう事でしょうか。 実行時のコマンド、$ java -jar SampleProgram/target/App.jar に何かオプションがいるのでしょうか。
退会済みユーザー

退会済みユーザー

2018/01/19 12:37

java -jar SampleProgram/target/App.jar \ -cp ~/.m2/repository/mysql/mysql-connector-java/5.1.45/mysql-connector-java-5.1.45.jar;(以下略) のようなかんじで
tride

2018/01/19 12:58

動作せず、状況は変わらずでした。 上記環境でいうmysql-connector-java-5.1.43.jarは存在している事は確認できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問