Pleiades Eclipse Windows 64bit Ultimate Full Edition のインストールといろいろな準備

目的は、Pleiades(Eclipse 4.7 Oxygen 2) Ultimate Full Edition でインストール済、または準備されているソフトウェアをインストールして利用可能にする事です。

大きなソフトウェアでは、以下のようになります

1) Java ( Eclipse 内で JDK 6,7,8,9 が使用可能です / インストールされています )
2) Tomcat ( Tomcat は 6,7,8,9 が同梱されて選択して使用可能です / xampp にも Tomcat7 が入っています )
3) php ( php(x86) は xampp に入っていますが、既存のものを使用できます )
4) Ruby (Ruby そのものはインストールが必要です)Ruby 2.4 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみましたRuby 2.4 で GET/POST メソッドを想定した CGI 用のテンプレート改良版( FORM で MySQL 参照と更新 )
5) Python (Python の 2(x64) と 3(x64) が同梱されて実行可能)
    MySQL の接続を行う場合は、Windows インストーラで Python をあらためてインストールが必要です
6) Perl ( perl(x86) は xampp に入っています )
7) C++/C ( MinGW GCC が入っていてビルドできます )

これらの開発環境は、Eclipse の UI よりプロジェクトを作成してプログラムを作成する事ができます。

8) xampp

これは開発する為のサーバー環境で、インストール済のものとインストールが必要なものがあります。

インストール済のサーバー用ソフトウェア

a) Apache  ( xampp から起動してすぐ使えます )
    ※既にインストール済の www サーバーや スクリプトベースの簡易サーバーも使えます
b) MySQL ( xampp から起動してすぐ使えます )
c) perl ( インストール済です )
d) php ( PHP 5.6.32 がインストール済です )
e) phpMyAdmin ( Apache に定義済の URL で使用できます )
f) sendmail ( fake sendmail という Windows 用の sendmail が入っています )
g) Tomcat ( xampp 環境で Eclipse とは別にインストールされています )

インストールが必要なサーバー用ソフトウェア

a) FileZillaFTP ( インストールする必要があります )
b) MercuryMail ( インストールする必要があります )

Pleiades のダウンロード

MergeDoc Project より Eclipse 4.7 Oxygen に入り、Windows 64bit Ultimate Full Edition をクリックしてダウンロードします。

http://ftp.jaist.ac.jp/pub/mergedoc/pleiades/4.7/pleiades-4.7.2-ultimate-win-64bit-jre_20171225.zip と表示が出てダウンロードされます。 



ここから、お約束の注意事項

Pleiades の中に入っている環境を問題無く使用する為には、二つのルールが昔からあります。

1) zip 書庫の名前を短くして( ここでは pleiades.zip )、c:\pleiades.zip とする。
2) 解凍ソフトとして 安全なのは Windows エクスプローラー
   7-ZipWinRAR で高速解凍 (パスの長さ制限を超えても正常に解凍できるため注意が必要)

ここでは、7-zip を( 昔から ) 使用しています。

最初の実行は、eclipse.exe -clean.cmd

これもお約束で、追加でソフトウェアをインストールしたり、環境が変化した場合に実行するようにしています。



最初のこの "c:\pleiades\eclipse\eclipse.exe -clean.cmd" の実行で、xampp の初期設定がされるようです。



ワークスペースを準備する

いろいろな言語や環境が利用可能なので、環境別のフォルダを用意してまず Java の Hello World を行います。



▼ コンソール Java 用のワークスペースを作成します



ワークスペースを作る毎に何故か 『システム PYTHONPATH の変更が検出されました』と出るので、良く解らないので気持ち悪いですが適用します。( いろいろ調べたんですが謎 )



言語毎に パースペクティブが用意されています。



Java のプロジェクトを作成します



プロジェクト名を入力して完了します( 他はデフォルトです )



パースペクティブは、JavaEE がシンプルなので変更して、開始コードを追加します。

▼ パースペクティブ変更


▼ 開始コードを追加




フォントを好みに変更します。



編集ボタンをクリックしてフォントを選択します。



Meiryo UI は、上へスクロール2回



実行の構成を作成します( 他の言語の事もあるのでこれに慣れたほうがいいです )
( ツールバーの実行ボタンの右の ▼ をクリックしてメニューを表示 )



Java アプリケーションをダブルクリックすると新しい構成が追加されるのでそのまま実行します。



ソースはこんな感じで行いました。以降の実行はツールバーからクリックして実行されます。




関連する記事Pleiades Oxygen 2 の XAMPP 内の FileZilla Server をインストールして使用するPleiades Oxygen 2 の XAMPP 内の MercuryMail をインストールして使用するPleiades Oxygen 2 の XAMPP 内の MySQL を利用可能にしてテストデータ(販売管理)を登録するPleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする


fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信 : Gmail なので ssl(465)

Pleiades Oxygen : Python と Ruby のパースペクティブでワークスペースを開いて最初に現れる『RemoteSystemsTempFiles』を削除する

Pleiades All in One(NEON) で、サーブレットとJSP を作成する手順

Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(1)

Java 8 で、sun.jdbc.odbc.JdbcOdbcDriver を使う手順



Pleiades Eclipse Windows 64bit Ultimate Full Edition 関連

Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備

▼ 補足情報 
Pleiades Oxygen : Python と Ruby のパースペクティブでワークスペースを開いて最初に現れる『RemoteSystemsTempFiles』を削除する

同梱アプリケーション

▼ Eclipse のプロジェクトから使用するもの
1) Java ( Eclipse 内で JDK 6,7,8,9 が使用可能です )
    ※ WindowBuilder を追加インストール
2) サーブレット&JSP ( Tomcat は 6,7,8,9 が同梱されて選択して使用可能です )
3) php ( php は xampp に入っていますが、既存のものを使用できます )
4) Ruby (Ruby そのものはインストールが必要です)
5) Python (Python の 2 と 3 が同梱されて実行可能)
6) Perl ( php は xampp に入っています )
7) C++/C ( MinGW GCC が入っていてビルドできます )

▼ 環境として使用するもの
★ XAMPP( この中に環境一式があります )
1) Apache
2) MySQL
3) phpMyAdmin ( apache 環境として動作します )
4) sendmail
5) Tomcat ( Pleiades 側とは別に単独で動作します )

追加インストールして利用するアプリケーション

1) FileZilla サーバー
2) MercuryMail ( POP3 と IMAP4 のメールサーバー )

追加環境

テストにはまだまだ使える(重宝する) AN HTTP Server の正しい使用方法

参考リンク

ざっくりJava JSP/サーブレット


Python

▼ ドキュメント
■ 言語
■ ライブラリ
8.11. pprint — データ出力の整然化

▼ アプリケーション

▼ 参考リンク
Chapter 5 Connector/Python Coding Examples
21.2. cgi — CGI (ゲートウェイインタフェース規格) のサポート

PythonのURLとクエリパラメータのパースまとめ
for文を使った繰り返し文の書き方
Python3基礎文法
基礎を復習 (リスト, タプル, ディクショナリ)
Python3系の基礎文法(文字列)


Ruby

▼ ドキュメント
■ 言語
■ 組み込みライブラリ
■ 標準添付ライブラリ
■ class WIN32OLE
■ library cgi
■ class CGI
■ ヒアドキュメント (行指向文字列リテラル)

▼ アプリケーション

▼ 参考リンク
Ruby/MySQL

Ruby(mechanize) で Seesaa のエクスポート
Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ
CGI(Ruby) / Hello world !
ruby-mysql の使い方の簡単な説明
Mechanize について


Pleiades Ultimate の XAMPP 内の MySQL を利用可能にしてテストデータを登録する

xampp-control.exe の設定

xampp-control.exe は管理者権限で実行する必要があるので、エクスプローラから右クリックしてプロパティの『互換性』タブで管理者として実行するチェックを ON にします。



my.ini の設定( サーバーをUTF-8 に設定 )



C:\pleiades\xampp\mysql\bin\my.ini の以下の部分のコメントを削除します。



開発用のソフトウェアを準備

SQLの窓 Build C++ と、販売管理C でテスト環境を構築します 。

手順1 ( MySQL の ODBC ドライバ)

SQLの窓 Build C++ は 32ビットアプリケーションなので、まず MySQL の ODBC ドライバ(32ビット)をダウンロードしてインストールします。

Connector/ODBC 5.3

※ 何も選択せずにダイアログ内で進めればOK です
Visual Studio 2013 の Visual C++ 再頒布可能パッケージ

Connector/ODBC 8.0
Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3


手順2 (SQLの窓 Build C++)

次に、SQLの窓 Build C++ をダウンロードして解凍して WinOfSql.exe を実行して下さい。

※ レジストリは使用しません。
※ 複数のフォルダにいくつあっても動作します。
※ 削除すればアンインストールです。

実行後 M ボタンをクリックして MySQL 接続用のダイアログを開き、ODBC アドミニストレータボタンで ODBC の DSN を作成する Windows の管理ツール(32ビット) を実行します。



手順3 ( DSN 登録 )

ここで、xampp-control.exe を実行し、開始ボタンで MySQL を開始します。(初期設定なので失敗しないようにこのタイミングで実行しています / 以降は必要な時でいいです)



ユーザDSN => 追加 => MySQL ODBC 5.3 Unicode Driver

( ODBC32ビットドライバの一覧は、HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI より確認できます)

▼ Details ボタンで全て開いて Character Set で cp932 を選択して下さい。


データベースは、まだユーザ用を作成していないので mysql を選択します。これは後で変更しなくとも、接続時に変更しますのでこのままでいいです。

入力が終わったら、データベースの右の Test ボタンで接続が成功するのを確認します。接続に成功したら、OK で登録します。

手順4 ( SQLの窓 Build C++ で接続して DB 作成 )



M ボタンで接続ダイアログを表示して、DSN に登録した情報で接続します



右側のテキストエリアで create database 自分用のデータベース名 で、Action ボタンをクリックして作成します。





作成後は、いったん終了して再度 SQLの窓 Build C++ を実行します(オペミスを防ぐためです)。そして再度 M ボタンで、今度は作成したデータベース(ここでは lightbox)で接続します。( 接続情報を保存する為です )




手順5 ( 作成した データーベース の確認 )

接続後、テーブルが無いのでなにも表示されませんが、メニューに登録済みの SQL で内容を確認できます。

『データベース一覧』で、登録したデータベースと既に存在するデータベースを確認できます。





『システム変数の値』で、キャラクタセットを確認します





手順6 ( 販売管理C.mdb をインポート )

▼ 学習用 MDB データのダウンロード


解凍した中にある 販売管理C.mdb を SQLの窓 Build C++ の左側のリストにドラッグ&ドロップします。



次にリストの中のテーブルを、SHIFTキーを使って選択して(まず先頭をクリックして、SHIFTキーを押しながら最後をクリック)から、処理 => エクスポート => MySQL を選択



直前の接続が選択されているので、下欄のチェックボックスを二つ選択して実行します


※ チェックボックスが無いと、主キーが無い状態でデータのみがエクスポートされます( 後からキー設定は可能ですがテーブルを全て設定するのは面倒です )

完了すると左下にメッセージが出るので、x ボタンで閉じます。



閉じたら、そこは MDB の接続なので、M ボタンで切り替えて下さい。テーブルの一覧が表示されるはずです。

※ テーブルをダブルクリックすると、テーブルデータが表示されて直接変更が可能です。( 更新は 『編集』メニューから更新です )







関連する記事

Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備


Pleiades Oxygen 2 の XAMPP 内の FileZilla Server をインストールして使用する


Pleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする





Pleiades Eclipse 4.7 Oxygen : SWT(Table) + MySQL の SQL(SELECT) で一覧表示



WindowBuilder のインストール

SWT と Swing に関しては、WindowBuilder のサイト よりインストール用の URL を取得します。

※ バージョンは、WindowBuilder のバージョンです。(Eclipse のバージョンに依存しなくなりました)

この URL を『新規ソフトウェアのインストール』で表示されるダイアログに入力します


以前の WindowBuilder のアンインストールは、『ヘルプメニュー』>『Eclipse について』>『インストール詳細』で表示されるウインドウからアンインストールします

プロジェクト作成

プロジェクトは専用のものを使いますので、『その他』から以下を選択して下さい。

プロジェクトを作成したら、CTRL+N でその他より、以下を選択して下さい。

実行してウインドウが表示されたら準備完了です。

テンプレートの修正

メニューバー・タスクバー・ツールバー用のテンプレートは邪魔なだけなので削除します。

MySQL 接続用ライブラリのインストール

Download Connector/J から jar をダウンロードして使用するか、Maven Repository より pom.xml に記述する内容を取得して使用します。

バージョンは、ここでは 5.1.46 を使用しています
( ダウンロードページでは、Looking for previous GA versions? リンクをクリックします )

Maven を使用するには、既存のプロジェクトを変換するのが簡単です。
( プロジェクトを右クリックして『構成』から Maven プロジェクトへの変換 )

Chapter 4 Connector/J Examples

実行ソースコード

001.package mysql;
002. 
003.import java.sql.DriverManager;
004.import java.sql.ResultSet;
005.import java.sql.SQLException;
006.import java.text.SimpleDateFormat;
007. 
008.import org.eclipse.jface.window.ApplicationWindow;
009.import org.eclipse.swt.SWT;
010.import org.eclipse.swt.events.SelectionAdapter;
011.import org.eclipse.swt.events.SelectionEvent;
012.import org.eclipse.swt.graphics.Point;
013.import org.eclipse.swt.widgets.Button;
014.import org.eclipse.swt.widgets.Composite;
015.import org.eclipse.swt.widgets.Control;
016.import org.eclipse.swt.widgets.Display;
017.import org.eclipse.swt.widgets.Shell;
018.import org.eclipse.swt.widgets.Table;
019.import org.eclipse.swt.widgets.TableColumn;
020.import org.eclipse.swt.widgets.TableItem;
021. 
022.import com.mysql.jdbc.Connection;
023.import com.mysql.jdbc.ResultSetMetaData;
024.import com.mysql.jdbc.Statement;
025. 
026.public class Main extends ApplicationWindow {
027. 
028.        // https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Findex.html&org/eclipse/swt/widgets/Table.html
029.        private Table table;
030. 
031.        // https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46
032.        // https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-examples.html
033.        private Connection conn = null;
034.        private Statement stmt = null;
035.        private ResultSet rs = null;
036.        private int maxRows = 20;
037. 
038.        public Main() {
039.                super(null);
040.                createActions();
041.        }
042. 
043.        @Override
044.        protected Control createContents(Composite parent) {
045.                Composite container = new Composite(parent, SWT.NONE);
046. 
047.                table = new Table(container, SWT.BORDER | SWT.FULL_SELECTION);
048.                table.setBounds(10, 41, 764, 338);
049.                table.setHeaderVisible(true);
050.                table.setLinesVisible(true);
051. 
052.                Button button = new Button(container, SWT.NONE);
053.                button.addSelectionListener(new SelectionAdapter() {
054.                        @Override
055.                        public void widgetSelected(SelectionEvent e) {
056.                                // 行を全て削除
057.                                table.removeAll();
058.                                loadMySQL("select * from 社員マスタ");
059.                        }
060. 
061.                });
062.                button.setBounds(10, 10, 75, 25);
063.                button.setText("実行");
064. 
065.                return container;
066.        }
067. 
068.        private void createActions() {
069.                // Create the actions
070.        }
071. 
072.        public static void main(String args[]) {
073.                try {
074.                        Main window = new Main();
075.                        window.setBlockOnOpen(true);
076.                        window.open();
077.                        Display.getCurrent().dispose();
078.                } catch (Exception e) {
079.                        e.printStackTrace();
080.                }
081.        }
082. 
083.        @Override
084.        protected void configureShell(Shell newShell) {
085.                super.configureShell(newShell);
086.                newShell.setText("MySQL Connector/J");
087.        }
088. 
089.        @Override
090.        protected Point getInitialSize() {
091.                return new Point(800, 443);
092.        }
093. 
094. 
095.        private void loadMySQL( String sql ) {
096. 
097.                try {
098.                        // MySQL Connector/J 接続
099.                        conn = (Connection) DriverManager.getConnection(
100.                                "jdbc:mysql://localhost/lightbox?user=root&password="
101.                        );
102. 
103.                        stmt = (Statement) conn.createStatement();
104.                        rs = stmt.executeQuery(sql);
105. 
106.                        // select の結果の列情報の取得
107.                        ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
108. 
109.                        // 列数
110.                        int columnCount = rsmd.getColumnCount();
111. 
112.                        // 前回のテーブル列を全て削除
113.                        int tableColumnCount = table.getColumnCount();
114.                        TableColumn tableColumnWork = null;
115.                        for( int i = tableColumnCount - 1; i >= 0; i--) {
116.                                tableColumnWork = table.getColumn(i);
117.                                tableColumnWork.dispose();
118.                        }
119. 
120.                        // 列名
121.                        TableColumn tableColumn = null;
122.                        for( int i = 1; i <= columnCount; i++) {
123.                                tableColumn = new TableColumn(table, SWT.NONE);
124.                                tableColumn.setWidth(100);
125.                                tableColumn.setText(rsmd.getColumnName(i));
126.                        }
127. 
128.                        TableItem tableItem = null;
129.                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
130.                        int countRow = 0;
131.                        while( rs.next() && countRow < maxRows ) {
132. 
133.                                countRow++;
134. 
135.                                String[] columnData = new String[columnCount];
136. 
137.                                for( int i = 1; i <= columnCount; i++) {
138. 
139.                                        if ( rsmd.getColumnTypeName(i).equals("DATETIME") ) {
140.                                                columnData[i-1] = sdf.format(rs.getDate(i));
141.                                        }
142.                                        else {
143.                                                columnData[i-1] = rs.getString(i);
144.                                        }
145. 
146.                                }
147.                                tableItem = new TableItem(table, SWT.NONE);
148.                                tableItem.setText(columnData);
149.                        }
150. 
151.                        rs.close();
152.                        stmt.close();
153.                        conn.close();
154. 
155.                } catch (SQLException ex) {
156.                        // handle any errors
157.                        System.out.println("SQLException: " + ex.getMessage());
158.                        System.out.println("SQLState: " + ex.getSQLState());
159.                        System.out.println("VendorError: " + ex.getErrorCode());
160.                }
161. 
162.        }
163.}

pom.xml
01.<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/xsd/maven-4.0.0.xsd">
02.  <modelVersion>4.0.0</modelVersion>
03.  <groupId>MySQL_01</groupId>
04.  <artifactId>MySQL_01</artifactId>
05.  <version>0.0.1-SNAPSHOT</version>
06.  <build>
07.    <sourceDirectory>src</sourceDirectory>
08.    <plugins>
09.      <plugin>
10.        <artifactId>maven-compiler-plugin</artifactId>
11.        <version>3.7.0</version>
12.        <configuration>
13.          <source>1.8</source>
14.          <target>1.8</target>
15.        </configuration>
16.      </plugin>
17.    </plugins>
18.  </build>
19.  <dependencies>
20.    <dependency>
21.      <groupId>mysql</groupId>
22.      <artifactId>mysql-connector-java</artifactId>
23.      <version>5.1.46</version>
24.    </dependency>
25.  </dependencies>
26. 
27.</project>

関連する記事

WindowBuilder のテーブルコントロールにインターネットから JSON データを読み込んで処理するテンプレート ( 行データをダブルクリックして取得 )