83752


Ubuntu 20.04上のVS CodeのExtension Pack for
Javaで単純なJavaコード（`HelloWorld.java`）を書いているのですが、実行する前に拡張機能がエラーを表示しており、またコンパイルもできないのでこれを解決したいです。  
ターミナル上では`javac HelloWorld.java`と`java HelloWorld`でコンパイル・実行できています。

JDKはHomebrewでOpen JDK 17をインストールしました。VS Codeの`setttings.json`にJDKのパスも設定してあります。

[code]

    "java.home": "/home/linuxbrew/.linuxbrew/Cellar/openjdk/17.0.1"
    
[/code]

コード及びVS Codeに表示されているエラーは以下の通りです。

# コード

[code]

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello World");
        }
    }
    
    
[/code]

# エラー

## VS Code上に勝手に表示されるエラー

[code]

    The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
    
[/code]

[code]

    The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
    
[/code]

[code]

    Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
    
[/code]

[code]

    String cannot be resolved to a type
    
[/code]

[code]

    System cannot be resolved
    
[/code]

## VS Code上で実行しようとすると表示されるエラー

[code]

    The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project
    
[/code]

# 環境

OS: Ubuntu 20.04  
Java: Open JDK 17  
VS Code: Version 1.62.2, Snapからのインストール  
VS Code拡張機能: Extension Pack for Java v0.18.6

# その他

JREはJDKと一緒にインストールされると聞いたので別途インストールはしていないです。  
JDKインストール時のコマンドは

[code]

    brew install openjdk
    
[/code]

です。

質問に不備があれば訂正・加筆いたしますのでお知らせいただければ幸いです。よろしくお願いします。


CC BY-SA 4.0
2021-11-17T10:45:29.660
83680
2021-11-30T19:12:02.487
2021-11-17T11:33:04.663
14101
38402
question
java ubuntu vscode
VS CodeのJava拡張機能が表示するエラー（The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files）を解決したい


現状、 Homebrew でインストールした JDK (openjdk) を `java.home` に設定しても認識されないようです。  
いずれも報告者は Mac ユーザのようですが、次の issue がありました:

  * [ OpenJDK 16 in java.home not recognized #1969 ](https://github.com/redhat-developer/vscode-java/issues/1969) \- redhat-developer/vscode-java
  * ["java.home" does not work on macOS with one than one JDK installed #339](https://github.com/microsoft/vscode-java-pack/issues/339) \- microsoft/vscode-java-pack

* * *

次のいずれかで回避できるようです:

  * 環境変数 `JAVA_HOME` に Homebrew でインストールした openjdk を設定して VSCode を起動する([参考](https://marketplace.visualstudio.com/items?itemName=redhat.java#java-tooling-jdk)) 
    * 例えば `~/.bashrc` に `export JAVA_HOME=/home/linuxbrew/.linuxbrew/Cellar/openjdk/17.0.1/libexec` を追記する
    * この場合、 VSCode の `java.home` 設定は削除します。
  * Homebrew 以外で JDK をインストールする 
    * 例えば <https://sdkman.io/> を利用する
    * この場合、 VSCode の `java.home` は新しくインストールしたパスを指定します(ただし例示した SDKMAN! では `JAVA_HOME` 環境変数が自動で設定されるので、単に `java.home` 設定を削除するだけでも良いです)。

いずれにせよ、 `java.home` 設定が Homebrew でインストールした openjdk
を指したままになっていると問題が解消されないので注意してください。

VSCode から認識されれば、コマンドパレットのメニュー " **Java: Configure Java Runtime** "
を選択して開かれるウィンドウの " **Installed JDKs** " タブにある " **Detected JDKs** "
にセットアップしたJDKが表示されます。


CC BY-SA 4.0
2021-11-21T19:25:36.997
83752
2021-11-30T19:12:02.487
2021-11-30T19:12:02.487
2808
2808
83680
answer