Java Silverを勉強するにあたり、実際の開発環境に近い状態でJavaを動かしてみたいと思い、VSCodeとiTermからJavaのコードを動かせるように環境設定しました。
ローカル環境を使わずにJavaを動かす際は、dokojavaというサイトを使っていました。『スッキリわかるJava入門』という本でおすすめされていたサイトです。
この記事を参考にする場合の注意
Visual Studio CodeでJavaの(デバッグできる)開発環境をつくるというサイトを参考に、Visual Stdio Codeに「Java Extension Pack」をインストールして開発環境を設定したのですが、使いこなせず、結局OpenJDKをインストールすることで、ローカルでJavaを動かすことができるようになりました。
ただ、Visual Stdio Codeに「Java Extension Pack」をインストールする過程はどのみち必要だったのではないか?と思うため、記事に残しています。
また、OpenJDKはUbuntuの仮想環境にインストールしていますが、Visual Stdio Codeの「Java Extension Pack」からインストールしたJavaはローカル環境に入ってしまっているようです。
現状、ローカル環境のJavaは「java version "14.0.2"」
ubuntu上のJavaは「openjdk version "1.8.0_265"」になっています。
これってまずいのかな・・・
Visual Studio Code側の設定
Visual Studio CodeでJavaの(デバッグできる)開発環境をつくるというサイトを参考に設定しました。
・まず、Visual Studio Codeに「Java Extension Pack」をインストールする
・左下の歯車マークから設定を開き、「setting.json」を開く
"java.home": "/Library/Java/JavaVirtualMachines/(インストールしたJDKフォルダ)/Contents/Home/"
と書き込む。
インストールしたJDKフォルダは、ターミナルに「java -version」コマンドを打ち込んで確認する
仮想環境(ubuntu)にJavaをインストール
ドットインストールの『Java 8入門』を参考に、OpenJDKというオープンソースのJavaをインストールしました
ドキュメントに従い、
$ sudo apt-get install openjdk-8-jre
というコマンドでインストールを試みたところ、
「ローカルのバージョンが古い可能性がある」という旨のエラーが出て焦りましたが、
$ sudo apt update
コマンドでバージョンアップし再インストールするとうまく行きました。
コードを動かす
別のパッケージを利用しない場合
javac (ファイル名).java
でコンパイル
java (ファイル名)
で実行する。
別のパッケージを使用する場合
※パッケージの命名に注意!!
Visual Studio Codeでは、ルートディレクトリから該当のjavaファイルに到るまでのパスがpackage名としてサジェストされることがある。これに従ってパッケージ名をつけるとコンパイル時に「パッケージが見つかりません」というエラーになる。
※javacを起動するディレクトリが、「パッケージの起点」となる!
上記のディレクトリ構成の場合、java_lessonsディレクトリでjavacを起動するならば
・「MyApp.java」のパッケージ名は
com.dotinstall.myapp
・「AdminUser.java」「User.java」のパッケージ名は
com.dotinstall.myapp.model
となる。
ターミナルからの起動
パッケージ化したものを起動するコマンド
javac com/dotinstall/myapp/MyApp.java
コンパイルするjavaファイルまでのパスは、パッケージ名と対応している。
コンパイルするのはエントリーポイント(mainメソッド)を持つファイル
java com/dotinstall/myapp/MyApp
で実行
コンパイルしたクラスファイルの出力先を指定する場合
・コンパイル時のコマンド
javac -d (出力先) (パッケージ名)/(クラス名).java
・実行するクラスのクラスパスを指定する
java -cd (クラスパス) (パッケージ名)