redhat-developer / vscode-java

Java Language Support for Visual Studio Code
Eclipse Public License 2.0
2.08k stars 439 forks source link

The method builder() is undefined for the type xxx #3733

Open f425 opened 2 months ago

f425 commented 2 months ago

demo

env

problem

  1. after upgrade Extension: Language Support for Java(TM) by Red Hat to v1.33.0. Got error:
    [{
    "resource": "/c:/Users/ww/work/test/project-for-test/test2/src/main/java/com/test2/Test2.java",
    "owner": "_generated_diagnostic_collection_name_#5",
    "code": "67108964",
    "severity": 8,
    "message": "The method builder() is undefined for the type Data1",
    "source": "Java",
    "startLineNumber": 9,
    "startColumn": 15,
    "endLineNumber": 9,
    "endColumn": 22
    }]
  2. Change Extension: Language Support for Java(TM) by Red Hat to v1.32.0. It's OK.
  3. Keep Extension: Language Support for Java(TM) by Red Hat with v1.33.0.
    • copy Data1.java to Data2.java and delete comments.
    • Data2.builder().build() is ok

image

heguro commented 2 months ago

There seem to be several issues related (or unrelated) to the Javadoc comments of the @Builder class in the latest Lombok 1.18.34. (issue 1, issue 2)

The version of Lombok bundled in this extension is from https://projectlombok.org/lombok-edge.jar, which currently delivers the same binary as Lombok 1.18.34, thereby affecting this extension.

Temporary solutions I discovered:

Steps to overwrite Windows PowerShell environment: ```ps1 # Get and extract vscode-java v1.32.0 binary curl.exe -LO "https://github.com/redhat-developer/vscode-java/releases/download/v1.32.0/vscode-java-1.32.0-220.vsix" Rename-Item "vscode-java-1.32.0-220.vsix" "vscode-java-1.32.0-220.vsix.zip" Expand-Archive -Path ".\vscode-java-1.32.0-220.vsix.zip" -DestinationPath ".\temp_ext" # Copy .jar file Copy-Item "temp_ext/extension/lombok/lombok-1.18.33.jar" "$env:userprofile/.vscode/extensions/redhat.java-1.33.0-win32-x64/lombok/lombok-1.18.33.jar" # Remove downloaded files Remove-Item -Recurse -Path "temp_ext","vscode-java-1.32.0-220.vsix.zip" ``` Linux-like environment: ```sh # Get and extract vscode-java v1.32.0 binary curl -LO https://github.com/redhat-developer/vscode-java/releases/download/v1.32.0/vscode-java-1.32.0-220.vsix # or wget: # wget https://github.com/redhat-developer/vscode-java/releases/download/v1.32.0/vscode-java-1.32.0-220.vsix unzip -d temp_ext/ vscode-java-1.32.0-220.vsix # Copy .jar file # Replace .vscode with .vscode-server if you're in remote environment (like wsl, docker or ssh) cp temp_ext/extension/lombok/lombok-1.18.33.jar /home/$(whoami)/.vscode/extensions/redhat.java-1.33.0*/lombok/lombok-1.18.33.jar # Remove downloaded files rm -rf /tmp/temp_ext vscode-java-1.32.0-220.vsix ```
f425 commented 2 months ago

@heguro Lombok version is 1.18.12 in my demo project. Before this extension v1.33.0, it was working fine.

f425 commented 2 months ago

image image image

iwangbowen commented 2 months ago

Is it fixed in the latest version

foxpluto commented 1 month ago

Which version are you referring? I have the Language Support for Java(TM) by Red Hat v1.35.202408 and the bug is still there.

iwangbowen commented 1 month ago

when this will be fixed

Kas-tle commented 1 month ago

Lombok has merged a fix as of a few days ago (see https://github.com/projectlombok/lombok/pull/3726), but they have not done a release yet. So I assume that will have to happen first so that an updated version of Lombok can be bundled with the extension.

rgrunber commented 2 days ago

https://github.com/redhat-developer/vscode-java/issues/3561#issuecomment-2442023671 woke me up. Could someone try the vscode-java pre-release and see if the problem is resolved ? According to https://github.com/redhat-developer/vscode-java/blob/0f89a67eaf7a0189e3da172a02e277d128a96cc7/gulpfile.js#L132 (the 1.18.33 label we give is wrong, but it's definitely the latest), we're using the latest lombok edge release, which is from 2024-10-18. That definitely should have the fix. If it doesn't work then the problem was never fixed by the PR.