プロジェクト

全般

プロフィール

Visual Studio Code でJava

高橋 徹 さんがほぼ3年前に追加

Microsoftのドキュメント Getting Started with Java in VS Code
https://code.visualstudio.com/docs/java/java-tutorial

まず、Coding Pack for Java をダウンロードし、実行
JavaCodingPack-0.3.13.exe

Visual Studio Codeがインストールされていない場合、Visual Studio Codeのダウンロードとインストールが走る。

最初のHelloWorld

  • 左端縦のツールバーで一番上のExplorerアイコンをクリックし、[Open Folder]をクリック
  • ファイルダイアログが開くので、作業フォルダを新規作成し選択
  • 左側ペインでフォルダ名(すべて大文字で表示されている・・・)の右脇にある[New File]アイコンをクリック
  • Hello.java を入力
  • 右側ペインでHelloクラスのソースコードを記述
    • コード補完はいろいろ効きます。
      クラス内で m キーを押すと public static void main が第一候補に
      p キーを押すと pで始まるキーワード、型名等が候補リストに、続いて r キーを押すと prで始まるキーワードや型名が候補リストに
      import文も自動生成
    • 文法エラーはバックグラウンドでチェックされPROBLEMSペインに一覧が、ソースコードに該当箇所が波線で表示
    • mainメソッドの上に [Run | Debug]の表示があり、クリックすると実行もしくはデバッグ実行
    • ソースコード各行の左端(行番号の左)にブレークポイントを設けられる
    • キーマップの設定で emacs はあるが、TABキーが単なる1TAB文の空白文字展開

プロジェクトを作成する機能あり

  • プロジェクト種類は、[No build tools]、[Maven]、[Spring Boot]、[Quarkus]、[MicroProfile]

返答 (2)

設定あれこれ - 高橋 徹 さんがほぼ2年前に追加

  • Settingsで、java.homeはdeprecated
    • java.jdt.ls.java.home (Java language serverが使うJDKを指定)、ただし、Language Support for Java(TM) by Red Hat はjreを同梱しているので指定の必要はほぼない

Oracle Java Platform Extension for Visual Studio Code - 高橋 徹 さんが5ヶ月前に追加

2023-10にOracleからVSCodeのエクステンションとしてJava開発機能が提供されました。
Marketplace上では、Java Platform Supportの題名でリストされています。
https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java

  • プロジェクトの作成
    • Command Palette を開いて、Java: New Project ... を実行
    • プロジェクトディレクトリを入力
    • MavenまたはGradleを選択
  • 2023-11-19現在、Java Platform Support v1.0.0 は、Gradle 8.3-rc-1 を使用している(JDK 21非対応)
    VSCodeからNew ProjectでGradleプロジェクトを作成すると、Gradle 8.3-rc-1が適用され JDK 21を使うとエラーになります。VSCodeの外でGradleプロジェクトを作成し、VSCodeでそのフォルダを読めばOK
  • 環境変数PATHでjavaを実行できるときは、そのjavaを使用する模様
    特定のjavaを指定する場合、設定が必要
    • jdk.jdkhomeに設定
      Command Palette を開いて、Preferences: Open User Settings (JSON) を実行
      settings.jsonがエディタに開くので、例えば次を設定
      "jdk.jdkhome": "C:\\Program Files\\Java\\jdk-17",
      注)末尾のカンマ必須、パスセパレータの\は2つ重ねる
    (1-2/2)