chromebook で開発環境の構築(Crostini と時々Crouton)
その②Eclipse, Tomcat
arakaki Java, chromebook 2019-01-01 27 のコメント

はじめに

最近Javaを触り始めました。噂では開発には大体Eclipseを使うとのことなのでインストールしてみました。

素人の環境構築なので不適切な部分もあるかと思いますが、予めご了承ください。

ざっくりまとめ

Eclipse
crostini 😠 使い物にならん
crouton 😗 まぁまぁ使える

という訳で、今回はcroutonメインの内容になります。

crouton編

Eclipse のインストール

なんにせよまずはEclipseをインストールしましょう(ダウンロードページはこちら)。とりあえずインストーラーをダウンロードしてパッケージを選ぶこともできますが、今回は直接「Eclipse IDE for Enterprise Java Developers」パッケージのLinux版をダウンロードしました。例によってここまではchromeOS上で操作しています。

どこに解凍するか

さて、無事にeclipse...tar.gzファイルのダウンロードが完了したところで、Linux初心者(私)にとってはこの解凍場所から迷ってしまいます。

こんな時は公式ドキュメントを見てみましょう。

FAQ Eclipseはどこで入手してインストールできますか? - Eclipsepedia(google翻訳済み)

Eclipseをインストールするには、ダウンロードしたzip / tarファイルを目的のディレクトリに解凍するだけです。これ以上の作業は必要ありません

ざっくり〜。他にも探してみましたがそれらしい内容は見つけられませんでした。debファイルならaptコマンドでよろしくやってくれるのに…。

結局こちらの記事を参考に、/optディレクトリに解凍することにしました。FHS的にも/optで正解っぽいですね。

参考

ちなみにman hierでも簡単な説明を確認できますが内容が古いです。といっても大した違いはなさそうですが。

さらに余談ですが、このサーバー上でファイルをどう配置しようかと考えていたときに以下のようなやりとりを見つけました。

[SOLVED] Who actually uses /srv

/srv is relatively new. 

...

/var is an older convention. It was meant for data that changes over time ("variable data")  ... but at some point, probably by lack of any other suitable place, /var become also the place to "data" that daemons would serve to other systems and users (such as databases and web pages). 

このコメント自体結構古いので現在では/srvに配置するのが主流になってたりするのだろうかとも思いますが、結局管理人が分かりやすいようにやればそれが一番なんだろうとも思います。私の場合、arakaki.tokyoのDockerコンテナでは/srvにmezzanine(Django)のファイルを置いてますが、実体はホストOSのホームディレクトリで永続化してたりします。(あまり深く考えませんでした😚)

解凍 & 実行

解凍先も決まったところでさくっと実行してみましょう。croutonにログインして以下。

sudo tar xzf Downloads/eclipse-jee-2018-12-R-linux-gtk-x86_64.tar.gz -C /opt/

パスにリンクを通りしておきます。

sudo ln -s /opt/eclipse/eclipse /usr/local/bin/

そして実行

xiwi eclipse

するとこんなエラー

A Java Runtime Environment (JRE) or Java Development Kit (JDK)
must be available in order to run Eclipse. No Java virtual machine
was found after searching the following locations:
/opt/eclipse/jre/bin/java
java in your current PATH

はい、Eclipseの実行にあたってはJREかJDKが必要なのでした。

参考

Oracleなどのサイトからダウンロードできますが、今回は横着してOpenJDKをDebianのレポジトリからaptでゲットしちゃいましょう。

sudo apt install default-jdk

参考

バージョンは8です

$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

参考

それでは改めて

xiwi eclipse

workspaceを設定すると無事起動しました。

Tomcat 連携

今回はJavaでウェブアプリを作るための環境構築なので、続いてTomcatをインストールします。

現在の環境

その前に、現時点の環境でServletを動かそうとしてみましょう。新規にDynamic Web Project(testプロジェクト)を作成して定番のHello Worldしてみます。

小さいのとスクリーンショットの調子が悪いのとで見づらいですが、javaxなどのパッケージが無いよ、というエラーがでます。

build pathはこんな感じ。

インストール

現在の環境を確認できたところで早速インストールしてみましょう。

Tomcatも横着してaptで取得したいところですが、それだとバージョンが古いのかうまく動かなかったので公式サイトからCoreのtar.gzをダウンロードします。

で、解凍先はEclipseのように/optでもいいかも知れませんが、なんとなくEclipseのワークスペースと同列で配置することにしました。

tar xzf Downloads/apache-tomcat-9.0.14.tar.gz -C ~/java/

ディレクトリ構成はこんな感じ。java関連のファイルをぶっこむためホームにjavaディレクトリを作り、eclipseディレクトリが文字通りEclipseのワークスペースです。上で作ったHello Worldのtestプロジェクトが入ってますね。

$ tree java/ -L 2
java/
├── apache-tomcat-9.0.14
│   ├── BUILDING.txt
│   ├── CONTRIBUTING.md
│   ├── LICENSE
│   ├── NOTICE
│   ├── README.md
│   ├── RELEASE-NOTES
│   ├── RUNNING.txt
│   ├── bin
│   ├── conf
│   ├── lib
│   ├── logs
│   ├── temp
│   ├── webapps
│   └── work
└── eclipse
    └── test

Tomcatのbinの中にbatファイルがありますが、これはWindows用なので削除しときます。

@🍞:~/java/apache-tomcat-9.0.14/bin$ rm *.bat

EclipseでServer Runtime Environment追加

それではいよいよEclipseでTomcatを動かしてみます。画面下部の「Servers」タブ内「No servers are available. ...」をクリック。「Servers」タブがなければメニューバーの「Window」→「Show View」から「Servers」をクリックで出ます。

「Apache」→「Tomcat v9.0 Server」を選んでNext

ホームのjavaディレクトリに配置したTomcatのパスを指定

testプロジェクトをaddしてfinish

これでRuntime Envilonmentが追加されました!早速Hello Worldを実行してみましょう。

…そうです、まだjavaxのパッケージが使えない状態なのでした。

パッケージ(ライブラリ)を追加するいくつかの方法

Targeted Runtimes

まずはもっともお手軽な方法から。画面左「Project Explorer」内のtestプロジェクト上で右クリック→「Properties」(またはAlt + Enter)で「Targeted Runtimes」を検索、先程追加したTomcatを選択しApply and Close

そしてもう一度実行してみると

わーい!ついに実行されました。ちなみに先程404になったブラウザのタブでリロードしても反映せずServerをrestartする必要があります。

ちなみに、今後プロジェクトを新規作成する場合にはTarget runtime欄で選択できます。

Build Path

次はBuild Pathでの設定です。プロジェクトを右クリック→「Build Path」→「Configure Build Path...」から「Add Library...」をクリックし「Server Runtime」を選択して「Next」→「Finish」で完了です。

libディレクトリにパッケージを配置

プロジェクトのlibディレクトリに必要なパッケージ(jarファイル)を配置します。

@🍞:~/java/eclipse/test3/WebContent/WEB-INF/lib$ cp ~/java/apache-tomcat-9.0.14/lib/servlet-api.jar ./

「Project Explorer」タブ内で右クリック→「Refresh」で完了。

javacコマンドでコンパイルする場合(classpath)

これまでEclipseでパッケージを追加する方法を確認してきましたが、ターミナル上でコンパイルする場合にはどうすればよいでしょうか。答えはググれば出てくるので諸々は割愛して、私はとりあえずCLASSPATH環境変数を設定してみました。これも正解らしい正解はなさそうなので、試行錯誤といった感じです。

export CLASSPATH='.:/home/username/java/apache-tomcat-9.0.14/lib/*'

参考

crostini編

さて、croutonではまぁまぁ使えることが分かりましたが、crostiniでは冒頭に書いたとおり使い物になりませんでした。

その理由がこのgif

私のタイピング能力が著しく低いのではありませんよ、念の為。原因は画面のちらつきです。そのせいで入力が反映されなかったり、入力途中で確定されてしまったりしています。これは日本語入力中に顕著ですが、英字で入力中、マウスで操作中、さらにはなんの操作をしていない状態でも発生します。これでは全く使い物になりません。

終わりに

今回はEclipse(とTomcat)の環境構築を見てきましたが、chrootのcroutonでは使えてLXDをベースとしたcrostiniで使えないというのは興味深い結果です。croutonでもスクリーンショットの具合が悪いことを考えるとX Windows Systemが適切に処理できないのだろうと想像できますし、その根底にはそもそもEclipseが重いという原因があるのでしょう。メモリには余裕がありそうなので、愛機のCPUが貧弱なせいなのだろうか…。LXDの設定でcrostiniへのリソース割当を最大化したらどうなるかも追加で試してみようと思います。

というか、今回少しEclipseを触ってみてゴテゴテしすぎな印象を強く受けました。世界的にはIntelliJのシェアが既に上回っているようですし、今後試してみようと思います。あとAndroid Studioもですねー。Android Studioで思い出しましたが、そもそも今後はJavaよりもKotlinの需要が増えるのかなぁ。

コメント

承認待ちのコメント 6 年, 3 ヶ月 前

承認待ちのコメント 6 年, 3 ヶ月 前

承認待ちのコメント 6 年, 3 ヶ月 前

承認待ちのコメント 6 年, 3 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 9 ヶ月 前

承認待ちのコメント 5 年, 4 ヶ月 前

承認待ちのコメント 4 年, 4 ヶ月 前

承認待ちのコメント 4 年 前

承認待ちのコメント 3 年, 11 ヶ月 前

承認待ちのコメント 3 年, 10 ヶ月 前

承認待ちのコメント 3 年, 10 ヶ月 前

承認待ちのコメント 3 年, 9 ヶ月 前

承認待ちのコメント 2 年, 10 ヶ月 前

承認待ちのコメント 2 年, 10 ヶ月 前

承認待ちのコメント 2 年, 3 ヶ月 前

承認待ちのコメント 1 ヶ月, 2 週間 前

新しいコメント

必須

記入が必要です(公開はされません)

オプション

© 2018 あらがきじゃなくてあらかき
arakaki.tokyo