[Java] UbuntuにJavaの開発環境を構築&実行確認

# 環境
Ubuntu
VSCode

# やること
- Java, Maven, Intellij インストール
- vscodeの設定
- 実行確認
- エラー対処法

# 参考
[こちらがとても参考になります！](https://amzn.to/2zx88U0)



# インストール
以下、aptアップデートとjavaインストールとjavaバージョン確認をまとめて行うので注意です。

## Java

### インストール
```
sudo apt update && sudo apt install default-jdk && java -version
```
```
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode)
```

### JAVA_HOME 設定

jdkのインストール場所は/usr/lib/jvm/にあるのでこちらのパスを〇〇rcファイルへ追記する

```~/.〇〇rcファイル
# ------------------------------------------------------------------
# java
# ------------------------------------------------------------------
export JAVA_HOME=/usr/lib/jvm/java-version-xxx-jdk
export PATH="$PATH:$JAVA_HOME/bin"
```

## Maven

####インストール

```
sudo apt update && apt install maven && mvn -version
```
```
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.6, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-54-generic", arch: "amd64", family: "
```

## IntelliJ IDEA Community Edition

####インストール

##### ①　PPAから

```
sudo add-apt-repository ppa:mmk2410/intellij-idea-community
sudo apt update
sudo apt install intellij-idea-community
```

##### ②　ソフトウェアセンターから
intellijで検索してインストールをクリック


## VSCode

#### インストール

```
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
```
```
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
```
```
sudo apt update && sudo apt install code
```

# VSCodeの設定

## 拡張機能
### Java Extension Pack
- 何も考えずにこれを入れる。
- Java開発に使うツールが必要最低限まとめてインストールされます。
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack

### Code Runer

- 選択した範囲をデバッグできます。
- Ctrl + Alt + N でCode Runnerを実行できます。

https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner

## settings.json

- java.home
JAVAをVSCode上で実行できるようになります。

- maven.executable.path
MavenコマンドがVSCode上で実行できるようになります。

- code-runner.runInTerminal
terminalでCodeRunnerの入出力を可能にします。

~~code-runner.executorMap
code runner実行時のコマンドを設定します。
デフォルトの設定だと対象のファイルを`fileNameWithoutExt`拡張子なしと見なすため、デバッグの実行場所によってはエラー( java.lang.NoClassDefFoundError) となることがあります。これは`$fileName`とすることで回避できます~~

```:mavenの実行パスを調べる
which mvn
> /usr/bin/mvn
```


```json-doc:settings.json
[
  // Java
  "java.home":"/usr/lib/jvm/java-version-xxx-jdk",

  // Maven
  "maven.executable.path": "/usr/bin/mvn",

  // Code Runner
  "code-runner.runInTerminal": true,
]

```

# 実行確認

- VSCodeを使います。
- 適当なディレクトリを作成してHelloWorld.javaファイルを作成する。
- メインメソッドがある箇所がデバックされます。

メインメソッド
**public static void main(String[] args)**
これを必ず記述します。


```~/java_lessons/hello_java/HelloWorld.java
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}
```

## 実行

以下のどちらでも実行可能。コンパイル＆実行されます。

- Code Runnerで実行する ( Ctrl + Alt + N)
- Run > Start Debugging ( F5 )


```CodeRunnerで実行した場合
[Done] exited with code=1 in 1.227 seconds

[Running] cd "/home/user/java_lessons/hello_java/" && javac HelloWorld.java && java HelloWorld

Hello World!
```

メインメソッドが無いと
次のようになります。

```
エラー: メイン・メソッドがクラスHelloWorldで見つかりません。次のようにメイン・メソッドを定義してください。
   public static void main(String[] args
```

# エラー例
対処法など

## The compiler compliance specified is x.x but a JRE x.y is used

`.settings/org.eclipse.jdt.core.prefs`の該当の数字をJREのバージョンに合わせる

```
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform= x.y
org.eclipse.jdt.core.compiler.compliance= x.y
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source= x.y
```

# おすすめ
試し読みできます！
<a href="https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC3%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8B%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC-ebook/dp/B07ZQWKL2Q/ref=as_li_ss_il?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=java&qid=1589269765&sr=8-1&linkCode=li3&tag=hurryth30-22&linkId=8ecf4b59e153460cea51d3bab2136630&language=ja_JP" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07ZQWKL2Q&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=hurryth30-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=hurryth30-22&language=ja_JP&l=li3&o=9&a=B07ZQWKL2Q" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />