Open7

Javaことはじめ

conao3conao3

Javaで開発したい。

Archlinuxの場合、 archlinux-java でグローバルで使用するJavaを切り替えることができる。
が、それをするとOSレベルでJavaが切り替わってしまいそう(要調査)なので、いつもの通り*envを使う。
Javaの場合は、jenvを使う。

jenvにJavaをインストールする機能がないので、Java自体はpacmanでインストールする。

これを見て、パッケージ名を調べてインストールする。
https://wiki.archlinux.jp/index.php/Java

もろもろ終わると、以下のようになる。

$ jenv versions
  system
  11
  11.0
  11.0.22
  17
  17.0
  17.0.10
  20
  20.0
  20.0.2
  21
  21.0
  21.0.2
  graalvm64-20.0.2 (set by /home/conao/.anyenv/envs/jenv/version)
  openjdk64-11.0.22
  openjdk64-17.0.10
* openjdk64-21.0.2

グローバルでJava21を使うように設定する。

$ jenv global openjdk64-21.0.2

$ java -version
openjdk version "21.0.2" 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13)
OpenJDK 64-Bit Server VM (build 21.0.2+13, mixed mode, sharing)

できた。

conao3conao3

パッケージマネージャは一旦mavenを使う。

$ mvn -version
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /opt/maven
Java version: 21.0.2, vendor: N/A, runtime: /usr/lib/jvm/java-21-openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.10.211-1-manjaro", arch: "amd64", family: "unix"
conao3conao3

archetype:generateでプロジェクトを作成する。

$ mvn archetype:generate

プロンプトは以下で答える。

groupId: com.conao3
artifactId: java-maven-hello

生成されたツリーは以下。

$ tree
.
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── conao3
    │               └── App.java
    └── test
        └── java
            └── com
                └── conao3
                    └── AppTest.java

10 directories, 3 files
conao3conao3

compile

$ mvn compile
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.379 s
[INFO] Finished at: 2024-03-21T23:50:18+09:00
[INFO] ------------------------------------------------------------------------
conao3conao3

test

$ mvn test
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /home/conao/dev/tmp/git/java-maven-hello/target/test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.558 s
[INFO] Finished at: 2024-03-21T23:50:57+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile (default-testCompile) on project java-maven-hello: Compilation failure: Compilation failure: 
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

https://stackoverflow.com/questions/53034953/error-source-option-5-is-no-longer-supported-use-6-or-later-on-maven-compile

<properties>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
</properties>
$ mvn test
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ java-maven-hello ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.conao3.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 s - in com.conao3.AppTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.248 s
[INFO] Finished at: 2024-03-21T23:51:50+09:00
[INFO] ------------------------------------------------------------------------
conao3conao3

package

$ mvn package
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ java-maven-hello ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.conao3.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in com.conao3.AppTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ java-maven-hello ---
[INFO] Building jar: /home/conao/dev/tmp/git/java-maven-hello/target/java-maven-hello-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.194 s
[INFO] Finished at: 2024-03-21T23:53:27+09:00
[INFO] ------------------------------------------------------------------------
$ tree -L 3
.
├── pom.xml
├── src
│   ├── main
│   │   └── java
│   └── test
│       └── java
└── target
    ├── classes
    │   └── com
    ├── generated-sources
    │   └── annotations
    ├── generated-test-sources
    │   └── test-annotations
    ├── java-maven-hello-1.0-SNAPSHOT.jar
    ├── maven-archiver
    │   └── pom.properties
    ├── maven-status
    │   └── maven-compiler-plugin
    ├── surefire-reports
    │   ├── com.conao3.AppTest.txt
    │   └── TEST-com.conao3.AppTest.xml
    └── test-classes
        └── com

19 directories, 5 files
conao3conao3

clean

$ mvn clean
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ java-maven-hello ---
[INFO] Deleting /home/conao/dev/tmp/git/java-maven-hello/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.171 s
[INFO] Finished at: 2024-03-21T23:54:48+09:00
[INFO] ------------------------------------------------------------------------
$ tree
.
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── conao3
    │               └── App.java
    └── test
        └── java
            └── com
                └── conao3
                    └── AppTest.java

10 directories, 3 files