Maven executable jar〜実行可能Jarファイル出力〜

イントロダクション

RPiへのデプロイをする時にMacからJARファイルをSSHで転送するやり方は不便なので以下の手順でできないか検討してみます。

つまり、Windowsで開発して、できたものをラスパイ(RPi)で動かすのにはどうしたらよいか?を検討しました。

解決へ移動

デプロイのフロー

  1. Mac上で起動テストを行ったソースをGitへ登録(Push)
  2. RPiで上記のプロジェクトをダウンロード
  3. RPi上でソースをビルドしてJARファイルを作成

この手順でJARファイルを作成し、実行する、上記の手順はRPi起動時に自動実行する様にautostartファイルに記載する

開発端末でのMaven設定(pom.xml)

pom.xmlの構成

?xml version="1.0" encoding="UTF-8"?>
<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">

  <!-- プロジェクト設定 -->

 <build>
 <!-- 入出力の設定 -->
 <!-- DEFAULT RASPBERRY PI PROPERTIES -->
 <pi.host>XXX.XXX.XXX</pi.host>
 <pi.port>22</pi.port>
 <pi.user>user_name</pi.user>
 <pi.password>password</pi.password>
 <pi.deployDirectory>/home/user_name/</pi.deployDirectory>
 <pi.main.class>your.package.name.mainClass</pi.main.class>

 <plugins>
   <plugin> 
      <!-- ビルド設定:mvn [plugin name] --> 
   </plugin>
 </plugins>
</build>
 <reporting>
   <plugin>
      <!-- レポート設定 -->
   </plugin>
 </reporting>
 <dependencies>
   <dependency>
     <!-- ライブラリ依存関係の設定 -->
   </dependency>
 </dependencies>
</project>

この構成の中に必要な情報を記述する。

作成したpom.xml(テスト未実施)→失敗

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>zenryokuservice</groupId>
    <artifactId>PAppletRpiCtl</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <repositories>
        <repository>
            <id>RPiCtl</id>
            <url>https://github.com/ZenryokuService/rpictl</url>
        </repository>
    </repositories>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>http://repo1.maven.org/maven2/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.processing/core -->
        <dependency>
            <groupId>org.processing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.6</version>
        </dependency>
    </dependencies>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>libs/</classpathPrefix>
                            <mainClass>
                                pictl.swing.frame.RpiCtl
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Mac上でのMavenビルド結果(RPi上では未実施)

結果、上記の方法ではできませんでした。

原因

  1. 「マニフェスト属性がありません」と怒られる
  2. 「processingを使用するためのJARがない」と怒られる 

問題部分

  • pomファイルにマニフェストを追加していなかった
  • 参照するJARを出力するJARにインクルードしていなかった

足りない部分をpomファイルに記載してビルドする

processingから参照しているものがある様だ。。。

<修正箇所>

・jarプラグインのバージョンを追記

・${artifactId}を${project.artifactId}に修正

 

2018/09/29 現在:調査中

<参考サイト>

processing: https://github.com/processing/processing/releases

maven: https://www.ibm.com/developerworks/jp/java/library/j-5things13/

pom: https://stackoverflow.com/questions/49398894/unable-to-compile-simple-java-10-project-with-maven

補足

実はpomファイルでjarを出力する前にRPi上では画面を起動するために(processingを起動するためにXFCE4をインストール、起動する必要があります。

この部分に関しては後日。。。

2018-09-30現在

まるで動かない。。。違う手段を検討する。。。

解決

GIthubを使用して、Git経由で、プログラムを起動する。

つまり

  1. Windowsで作成したプログラムをGithubhへPUSH
  2. 他の端末でPULLして実行

上記の手段を用いることにする。

具体的に

必要なツールは以下のものになります。

  • Git
  • Maven

手順

以下の手順を踏みます。

Githubからのダウンロード

gitコマンドでインストールした後に、次のコマンドを使用します。

git clone GithubのURL

Mavenで実行する

作成したプロジェクトをクローンしたら次のコマンドで実行します。

mvn install

これで、必要なライブラリなどをインストールできます。

mvn exec:java

このコマンドで、Javaプログラムを起動できます。

TensorFlow C++環境〜EclipseにCDTをインストール〜

イントロダクション

Javaでの環境をセットアップしたのですが、チュートリアルが`PythonとかC++しか見当たらなく。。。Pythonでの作成は、好みの問題により見送ることにしました。→C++でやりたいわけです。

駄菓子菓子。。。
C++のインストールはPythonでやるようでした。。。

うーんこれは、本格的にC++で実装しないといけないかも?

TensorFlow in C++環境セットアップ

毎度おなじみEclipseを使用します。

Eclipseを開き上部にあるメニューより「Help」→「MarketPlace(マーケットプレイス)」を開きます。

検索フィールドに「CDT」と入力して検索を実行

上記のようなプラグインがあるのでインストールします。

インストールしたら再起動、プロジェクトの作成をします。

「C++Project」を選択

Hello Worldプロジェクトを選択して作成すると下のように初めのプログラムが実装済みで作成されます。プログラムの起動確認→C++が起動する確認を取るためのハローワールドです。初めてC++やる人も実行できます。

[rakuten ids="mtgec-beauty:10000803"]

以上です。

Eclipse セットアップ関連

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~



Java Git clone in Eclipse and IntelliJ IDEA 〜Githubからソースの取得〜

イントロダクション

Githubから、サンプルコードなど、対象のプロジェクトのソースを取得する手順を記載しました。リポジトリのクローン方法です。

具体的には、人の作った作品をGitから取得して自分のPC上で動かすことができると言うことです。

Gitの使い方

まずは、VCS(Version Control System)について記載します。
GitはVCSの一種です。仕事でもプロジェクトの資源管理などで使用されることが多いと思います。

VCSとは

リポジトリにファイルのバージョン、登録したタイミングで保存される、情報を管理するシステムのことです。
これを使用して、作成したコードやドキュメントの管理、ファイルの修正の履歴を管理することができます。

インストール手順

Windows端末の場合は、こちらのURLより、インストーラーをダウンロードできます。
詳細は、こちらのページをご覧ください。

※インストーラーなので、クリックのみでインストール出来ます。

使い方

Gitを使用するには2種類の手段があります。

  • 開発ツールやアプリを使う
  • コマンドで実行する

アプリで使う

GUIでの操作が可能です。「TortoiseGit」「SourceTree」の二つを利用したことがあります。

どちらも、便利です。仕事で使用するときには、何度もコミットしたり、元に戻したり。。。色々やりますので、GUIでやった方が楽です。
しかし、競合したときなどコマンドで元に戻したりするので、コマンドも知っておいた方が良いです。

IntelliJ IDEA

Git接続手順

下の画面(IntelliJの初期画面)で「Check out from Version Control」を選択します。プルダウンでGitを選択します。

そして、チェックアウトしたいURLをコピペします。
「Test」で接続のテストができます。

チェックアウトの確認ダイヤログが出ますので「Yes」

古い記事です。

Gitクローンした後にMavenビルドをかけて開発環境を整えます。
How to get sample code from Git, and after clone, execute Maven Build to make develop environment in your pc.

Gitからのクローン手順(Eclipseを使用する場合)

How to clone from Eclipse to Git.

色々と試しましたが、Gitから直接ダウンロードするjのが一番
ということになりました。

I had tried to some way to get source from git. And I think best way is using "git clone" in eclipse...

なのでEclipseからチェックアウト(Pull)してきます。
Eclipseのプロジェクトパースペクティブから右クリック

Git->Project from Git(からインポート)

Gitページを開きま緑色の部分をクリックするとURLを取得できます。


GitのURLをコピペします。

あとは、次へ(next)をクリックしていきPullします。

下はPullした結果です。ここからソース見たり、動かしたりします。

起動するときは、以下の様にMaven buildで起動できます。

[rakuten ids="neowing-r:10866284"]

JavaFXでハローワールド〜

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine〜

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement 
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

 



Gitリポジトリの取得 〜GitからソースをPullしよう〜

イントロダクション

Gitというアプリケーションを使用して、いわゆるVCSというものです。ウェブ上にあるGit Hubウェブサイトと自分のパソコン上で動く、Eclipseを連携して作成したファイルのバージョン管理〜プロジェクト管理が出来ます。
※これは、GitとEclipseの連携ができるプラグインEGitを使用する方法です。最近のものにはデフォルトでインストールされていると思います。

Eclipseのインストールはこちら

Gitとは

Gitは、上述の通りVCSですが、どんなものか?という部分について説明いたします。

また、他の人が作成したプロジェクトなどをチェックアウトして自分のPCで動かしたり、改造したり。。。

学習から趣味まで、楽しめるものです

バージョン管理とは

バージョン管理とは、作成、更新するファイルの状態をコミットしたタイミングで登録しておき、いつでも元のバージョンに戻すことができる仕組みを言います。
<例>

  1. 2023-03-02 10:00に「メモ.txt」ファイルをコミットしました。
  2. 2023-03-03 10:00に「メモ.txt」ファイルを修正してコミット。
  3. 2023-03-04 10:00に「メモ.txt」ファイルを2023-02 10:00のバージョンに戻す。そして再度修正し、コミット。

上記のような手順でファイルを修正します。それぞれの修正履歴はブランチという形で履歴を残すことができます。

図にすると下のような形でファイルのバージョン管理を行います。

予備情報

Git→リポジトリ(ファイルやソースなどを管理するアプリケーション)、これらのアプリケーションは、オープンソース・ソフトウェア(OpenSourceSoftware)と呼ばれるもののうちの一つです。

最近の(2018/05/04現在)EclipseではGitへの連携プラグイン(EGit)が初期状態で入っています。ない場合は以下の手順で探してみてください。

インストール

ヘッダー部分の「Help」→「EclipseMarketPlace」もしくは
「ヘルプ」→「Eclipseマーケットプレース」を選択

ここから「インストール」をクリックする

ソースをダウンロードする(Pullする)

プロジェクトを右クリック→インポート

あとは以下の順序で選択して最後にURLを入力してOK

コピーしてくるURLは下のようにGithubからコピーできます。

コマンドラインからPullする

正直のところPullする時にうまくいかないことが多いので
コマンドラインでの実行方法を記載したします。
Windows: コマンドプロンプトを起動します。
MacやLinux: Terminalを起動します。
筆者はMacで記載しているので「Terminal」を使用します。
「Javaでゲーム作成する時に使用できるライブラリ」LWJGLをPullします。

  1. GitからプルしたいWebページ(URL)を取得する(コピーしておく)
  2. Gitをダウンロードしたいフォルダを作成(ターミナルを開く)

    mkdir 作成するフォルダの名前

  3. ディレクトリを移動

    cd ./作成したフォルダ

  4. 以下のコマンドを入力してエンターキー
    > git clone https://github.com/LWJGL/lwjgl3.git

練習用に作成したプロジェクトもあります。よかったらPULLしてください。

Javaの基本的なことを実装(テスト)したソース(JavaDocつき)をPUSHしています。

オススメ

Gitからゲームを落としてくる(JavaGameの一覧があるページ)

・Javaの基本を理解するなら下の「Java Basic」をリポジトリに上げているので参考にどうぞ、ソースと記事で理解しやすいと思います。

[rakuten ids="znewmark:10000567"]

IntelliJ IDEAでPULL

下のようにGitからプロジェクトをチェックアウト(プルしました)

<関連ページ一覧>

<開発準備>

Eclipseのインストール

<Java Basic>

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 8.5 Array
  11. Java Basic Level 10 While statement
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2

Git

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

<Java Step1〜ミニゲーム作成>

Micro:bitで遊ぶ

  1. Micro:bit(Chibi:bit) での開発環境セットアップ
  2. Micro:bit スマホでプログラミング〜ブラウザにアクセス〜
  3. Micro:bit スマホでプログラミング〜Bluetoothの設定〜
  4. PHP JS 〜WebSocketもどきの作成〜
  5. PHP ServerSocket 〜レンタルサーバーでSocket受信〜
  6. Python websocket client〜WebSocket送信処理を作る〜
  7. Micro:bit Python 〜マイクロビット→PCへシリアル通信〜
  8. ターミナル(コマンド)を使う 〜FTPSを使ってファイルアップロード〜
  9. Microbit リファレンス 〜サイトを眺めてみる〜
  10. Microbitで遊んでみる
  11. Microbitで遊ぶ〜ボタンを押す〜
  12. Microbitで遊ぶ〜シリアル通信をする〜
  13. Java Microbit Serial data connect 〜シリアル通信〜※中途半端です
  14. Microbit Python 〜シリアル通信データを受け取る〜
  15. Microbit Python HTTP リクエストを飛ばす
  16. Microbit花火〜MicrobitからWebServerまでの旅〜

Java Install Eclipse〜開発ツールのインストール〜

開発ツール(IDE)のインストール手順です。

Introduction

How to install install Eclipse.

インストール手順(Procedure of install)

<Eclipseのインストール>

  • 右のURLへアクセスする: ここをクリックするとダウンロードサイトへ飛びます。

  • Eclipseのダウンロード ※迷ったら、マークの付いているものを選択

  • ダウンロードが終わったら起動する ※困った時は、最新のものを選んでください。

  • Eclipseがインストールできたら、以下の手順を行ってください → 「プロジェクトの作成」

1.Install Eclipse

・access this URL 「http://www.eclipse.org/downloads/

・select area to download

・execute Eclpse ※ this page help your installing eclipse

<プロジェクトの作成>(<create project>)
PackageExplorer[パッケージエクスプローラ]を右クリック

Right click on Package Explorer

新規→Javaプロジェクトを選択してプロジェクトを作成します。

  1. プロジェクトが作成できたらクラスを作成します。

プロジェクト名、クラス名共に好きな名前を入力してください
Javaのルールで使用できない文字もありますのがエラーが出るので心配無用。

Input project name and class name, your favarit name.

do not warry about Java Naming role. Because alert error in eclipse.

<(Mevenを使用するプロジェクト作成手順>

とりあえずは、下のようなことができます。

2.NetBeansのインストール(Installing NetBeanse)

・右のURLへアクセス、: https://netbeans.org/downloads/index.html

・Javaの対応しているバージョンを確認してダウンロードしてください
※2018/04/30頃にJDK10.XXを使用した場合動きませんでした。
<プロジェクトの作成>(<create project>)
・NetBeansが起動したら以下の手順でプロジェクトを作成します。

左上にあるマークをクリックして下のような画面を表示

Java     => コンソール出力とかを行うプロジェクト(JavaSE)
JavaFx =>  Javaで画面を作成できるプロジェクト(JavaFX) ※JavaSEでもOK
JavaWeb => JavaのWebプロジェクト
JavaEE =>  大掛かりなウェブシステムの構築を行うプロジェクト
JavaME => Javaを使用して、ラズパイなどの小さなパソコン向けのアプリ作成
を行うプロジェクト

3.IntelliJ IDEA

こちらを参照してください。

4.BlueJ

同様にこちらを参照ください。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜