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

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

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

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

568閲覧

新しいXAMPPで従来のWebアプリを動かすには

casaganai

総合スコア144

Java

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2018/01/30 08:41

前提・実現したいこと

新しいXAMPP7.2.1をインストールしましたが、MySQLがmariaDBになっており、従来のjavaでつくったWebアプリケーションではDBにつながらないようです。
JDBCドライバーをmariaDBのものに変更してみましたが、うまくいきませんでした。加えて、javaの開発環境も4.7にしたので、WTPが標準的になっており、よくわかりません。
システムはEclipse4.2に載っていた「シンプルBlog」というものです。ソースコード(サーブレットとjspは除く)は下に記載しましたが、初心者同然ですので、ソースのどこが悪いか指摘していただけるとありがたいです。

発生している問題・エラーメッセージ

エラーメッセージは表示されませんが、DBの中を表示しません。

エラーメッセージ

該当のソースコード

Java

1 2```Topic.java 3 4package blog; 5 6import java.util.Date; 7 8/** 9 * トピックのビーン 10 */ 11public class Topic { 12 13 /** 連番 */ 14 private int id; 15 /** タイトル */ 16 private String title; 17 /** 内容 */ 18 private String content; 19 /** 投稿日 */ 20 private Date postDate; 21 22 public String toString(){ 23 return super.toString() 24 + ",id=" + id 25 + ",title=" + title 26 + ",content=" + content 27 + ",postDate=" + postDate 28 ; 29 } 30 31 32 // 33 //単純なセッタ、ゲッタ 34 // 35 public int getId() { 36 return id; 37 } 38 public void setId(int id) { 39 this.id = id; 40 } 41 public String getContent() { 42 return content; 43 } 44 public void setContent(String content) { 45 this.content = content; 46 } 47 public Date getPostDate() { 48 return postDate; 49 } 50 public void setPostDate(Date postDate) { 51 this.postDate = postDate; 52 } 53 public String getTitle() { 54 return title; 55 } 56 public void setTitle(String title) { 57 this.title = title; 58 } 59} 60 61ConnectionManager.java 62 63package blog; 64 65import java.sql.*; 66 67/** 68 * �V���v���ȃR�l�N�V�����Ǘ��N���X 69 * 70 * @author Shinji Miyamoto 71 */ 72public class ConnectionManager { 73 74 /** 75 * JDBC�h���C�o�[�̃N���X�� 76 */ 77 final static String DRIVER = "com.mysql.jdbc.Driver"; 78 79 /** 80 * �f�[�^�x�[�X��URL 81 */ 82 final static String URL = "jdbc:mysql://localhost:3306/mydb"; 83 84 85 /** 86 * �f�[�^�x�[�X�̃��[�U 87 */ 88 final static String USER = "root"; 89 90 /** 91 * �f�[�^�x�[�X�̃p�X���[�h 92 */ 93 final static String PASS = ""; 94 95 /** 96 * Conncection���擾���܂��B 97 */ 98 public static Connection getConnection() 99 throws SQLException { 100 101 try { 102 Class.forName(DRIVER); 103 } catch (ClassNotFoundException e) { 104 e.printStackTrace(); 105 throw new IllegalStateException( 106 "fail to class load : " 107 + e.getMessage()); 108 } 109 110 Connection con = DriverManager.getConnection(URL, 111 USER, PASS); 112 113 return con; 114 } 115} 116 117 118BlogController.java 119 120package blog; 121 122import java.sql.Connection; 123import java.sql.ResultSet; 124import java.sql.SQLException; 125import java.sql.Statement; 126import java.util.ArrayList; 127import java.util.List; 128 129/** 130 * Blogを操作するビジネスロジック 131 * 132 * @author Shinji Miyamoto 133 */ 134public class BlogController { 135 136 /** 137 * シングルトンのインスタンス 138 */ 139 private static BlogController controller = new BlogController(); 140 141 /** 142 * このクラスのインスタンスを取得します。 143 * 144 * @return BlogControllerのインスタンス 145 */ 146 public static BlogController getInstance() { 147 return controller; 148 } 149 150 private BlogController() { 151 } 152 153 /** 154 * トピックをポスト(登録)します。 155 * 156 * @param topic 157 * トピック 158 */ 159 public void postTopic(Topic topic) { 160 String sql = "INSERT INTO TOPIC(TITLE, CONTENT)" 161 + " VALUES(" + "'" + topic.getTitle() + "'" 162 + ",'" + topic.getContent() + "'" + ")"; 163 164 Connection con = null; 165 Statement smt = null; 166 try { 167 con = ConnectionManager.getConnection(); 168 smt = con.createStatement(); 169 smt.executeUpdate(sql); 170 } catch (SQLException e) { 171 e.printStackTrace(); 172 } finally { 173 if (smt != null) { 174 try { 175 smt.close(); 176 } catch (Exception ignore) { 177 } 178 } 179 if (con != null) { 180 try { 181 con.close(); 182 } catch (Exception ignore) { 183 } 184 } 185 } 186 } 187 188 /** 189 * 最近の(というか全部の)トピックを取得します。 190 * 191 * @return トピックのリスト 192 */ 193 public List<Topic> getTopics() { 194 195 String sql = "SELECT * FROM TOPIC"; 196 List<Topic> topics = new ArrayList<Topic>(); 197 198 Connection con = null; 199 Statement smt = null; 200 ResultSet rs = null; 201 try { 202 con = ConnectionManager.getConnection(); 203 smt = con.createStatement(); 204 rs = smt.executeQuery(sql); 205 while (rs.next()) { 206 Topic topic = new Topic(); 207 topic.setId(rs.getInt("ID")); 208 topic.setPostDate(rs 209 .getTimestamp("POST_DATE")); 210 topic.setTitle(rs.getString("TITLE")); 211 topic.setContent(rs.getString("CONTENT")); 212 topics.add(topic); 213 } 214 } catch (SQLException e) { 215 e.printStackTrace(); 216 } finally { 217 if (rs != null) { 218 try { 219 rs.close(); 220 } catch (Exception ignore) { 221 } 222 } 223 if (smt != null) { 224 try { 225 smt.close(); 226 } catch (Exception ignore) { 227 } 228 } 229 if (con != null) { 230 try { 231 con.close(); 232 } catch (Exception ignore) { 233 } 234 } 235 } 236 237 return topics; 238 } 239 240 public static void main(String[] args) { 241 BlogController ctrl = BlogController.getInstance(); 242 List<Topic> topics = ctrl.getTopics(); 243 for (int i = 0; i < topics.size(); i++) { 244 System.out.println(topics.get(i)); 245 } 246 247 System.out.println("END"); 248 } 249 250} 251 252### 試したこと 253JDBC指定をmariaDBにしてみましたが反応なし。 254 255### 補足情報(FW/ツールのバージョンなど) 256 257TOMCATのバージョンは9.04です。jdkも9.04です。

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

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

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

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

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

unz.hori

2018/01/30 09:08

反応なしというか、エラーは何か出てないのでしょうか?
casaganai

2018/01/30 09:29

Eclipseの中でWTPを使って動かすと、コンソールにエラーは出ずに、「Server start up in 2837 ms」と表示されてTomcatと通っているように思えます。モニターにもアプリの初期画面が表示されますが、DBの内容を全件表示せねばならないのに何もデータが表示されません。
casaganai

2018/01/30 09:46

すみません。上記のアドレス。404 Not Found になります。
unz.hori

2018/01/30 09:53

おや?Googleで"mariadb java 接続"で検索して、「MariaDB Connector/J で MariaDB 10.2 に接続する - Qiita」で行くと見えますが、URL直だと見えないですね確かに。
casaganai

2018/01/30 10:02

このサンプルプログラムは数日前試してみました。やはり失敗しました。mariaDBの設定が悪いのでしょうか?しかし、localのWordpressではDBを表示してくれるのですが・・
unz.hori

2018/01/31 00:52

WordPressはPHPで書かれているみたいですね。ということはやはりJavaとの連携ができてないのでしょうね。
unz.hori

2018/01/31 00:57

ConnectionManager.javaのDRIVERが使用するJDBCドライバ。URLがDBに接続する際の情報になります。ここは何か書き換えましたでしょうか?また、MariaDB用のJDBCドライバはライブラリに組み込まれているでしょうか?
casaganai

2018/01/31 02:17

mariaDB用のJDBCドライバをライブラリに組み込んで、コードもmariaDB用に変えてみました。しかし、うまくいかずMySQLのドライバに戻しました。私の調べた情報では、mariaDBはrootではアクセスできないというものです。新しいユーザーを作らねばなりませんが、ここで嵌まりました。
unz.hori

2018/01/31 02:25

書き換えた部分を質問に追記してください。検索してみましたが、rootでアクセスできないという情報が見つかりませんでした。ちなみに環境(OS)はWindowsですよね?
casaganai

2018/01/31 02:43

ConnectionManagerの中で"com.mysql.jdbc.Driver"→"org.mariadb.jdbc.Driver"に、 "jdbc:mysql://localhost:3306/mydb"→ "jdbc:mariadb://localhost:3306/mydb"に変更。root関係で気になった情報はこちら→https://jyn.jp/ubuntu-16-04-mariadb-password-bug/。言い忘れていましたが、OSはubuntu17.10です。
unz.hori

2018/01/31 02:57

mysql -u rootだとAccess deniedになるんですか?
casaganai

2018/01/31 03:29

sudo mysql -u rootで次のエラーを表示します。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
unz.hori

2018/01/31 03:56

あー、他にも該当エラーメッセージで検索すると色々と情報があるので新し目のやつを参照するといいかもしれません。
guest

回答1

0

ベストアンサー

ソースコードに書かれてるJDBCドライバのクラス名と接続URLがMySQLのままです。

ドライバ名は「org.mariadb.jdbc.Driver」、
接続URLは「jdbc:mariadb://」から始まります。

他にもWTPを使いたいのであれば、プロジェクトのプロパティを開き、プロジェクトのファセットを選びます。
その後、Eclipseから参照しているTomcatのバージョンを指定してサーバを作成し、サーバにプロジェクトを搭載すれば動作はするでしょう。

ただ、JDBCドライバのクラスパス設定やjarファイルの配置はプロジェクトにて行うものなので、通常のWebアプリケーションであれば、WEB-INF/lib の中に必要なjarファイルを配置するものです。

投稿2018/02/11 16:44

A-pZ

総合スコア12011

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

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

casaganai

2018/02/12 05:56

ご指摘の点は自分でもやってみましたがDBに拒絶されてしまいました。そこでmy.cnfを変更してみると接続されるようになりました。しかし、投稿してみると文字化けになって返ってきます。そこでXAMPPを5.6.3にダウングレードしましたがここでも接続できず、さらに1.8.3にダウングレード、utf8にすると正常に動きました。動いたのは動きましたがmariadbでutf8mb4を使う当初の目論見から外れた結果となりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問