Javaで作成する、画面アプリをラズパイで動かそうと言うものです。
今回は、作成したアプリをラズパイ上で動かし、「Youtubeプレイヤーとして動かそう!」と言うものです。
JavaFX in RPi
開発環境構築
前提として、自分が使用している開発環境について記載します、
- SceneBuilderを使用しています。(JavaFXの初期コード生成などしてくれます)
- JDK1.8を使用(RPiもJDK1.8を使用します)
SceneBuilderのインストール
こちらの記事にインストール手順と実際に動かした時の内容を記載しました。(動かしてみた時の記事)
このセットアップをしておくとJavaFXのプロジェクトを作成した時に、下のようなコードを生成してくれます。
public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); Scene scene = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
ちなみに、プロジェクトをMaven化しているのでPOMファイルがあります。生成されるのはapplication.cssとMain.javaです。
開発開始
現状(上こコード)では下のような表示ができます。
まぁ何も実装していないので何もないです(笑)
ここに必要なもの(コンポーネント(ボタンなど))を追加していきます。
設計
設計の大まかなところはGithubにアップしています。
なので、とりあえずはURLをロードして、表示する画面を作成します。
大まかな仕様は以下の通りです。
<仕様>
- JavaFXを起動
- プロパティファイルをロード(読み込む)
- プロパティファイルにあるURLを読み込み表示する
とりあえずはここまで実装しようと思っています。
JavaFXの起動
とりあえず生成されたコードで動いているので、この部分は飛ばします。
1.プロパティファイルの読み込み
RPi(ラズパイ)で動かす時にはMavenのプラグインで出力するJARファイルを起動して動かすので、別途プロパティファイルをJARファイルの隣(同じ階層)に配置する必要があります。
しかし、開発段階では気にしなくて良いので、
そんなわけで実装開始〜
プロジェクトの設定
単純に使用したいライブラリ、JARファイルの出力を設定します。
まずは使用するJUNIT(使い方など)をdependency
に追加、使用できるようにします。
ちなみに、EclipseのMavenプロジェクトの場合はPOMファイルに下のような設定をかき、ビルド(Install)すると必要なライブラリが追加されます。
実行するときは下のようにPOMファイルを右クリックして Maven Installを実行します。
ちなみに、自分が作成したPOMファイル(コピペで作成)は以下のようなものです。
<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>RPiMediaPlayer</groupId> <artifactId>RPiMediaPlayer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>RPi メディアプレーヤー</name> <!-- 必要な情報をプロパティとしてもつ --> <properties> <java.version>1.8</java.version> <maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.source>${java.version}</maven.compiler.source> </properties> <!-- 使用したいライブラリ(依存性)の設定 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <!-- ビルドの設定 --> <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>zenryokuservice.socket.server.SocketServerBasic</mainClass> <classpathPrefix>dependency-jars/</classpathPrefix> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.5.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/dependency-jars/ </outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
実装まで行きませんでしたが、ここら辺で失礼いたします。
でわでわ。。。