google / error-prone

Catch common Java mistakes as compile-time errors
https://errorprone.info
Apache License 2.0
6.85k stars 743 forks source link

Refaster template compilation instructions are out of date or unclear #4261

Open timo-a opened 9 months ago

timo-a commented 9 months ago

Following https://errorprone.info/docs/refaster I created a new file StringIsEmpty.java (in an empty directory) and ran:

$ wget http://repo1.maven.org/maven2/com/google/errorprone/error_prone_refaster/2.3.1/error_prone_refaster-2.3.1.jar
--2024-01-25 21:56:41--  http://repo1.maven.org/maven2/com/google/errorprone/error_prone_refaster/2.3.1/error_prone_refaster-2.3.1.jar
Resolving repo1.maven.org (repo1.maven.org)... 2a04:4e42:8d::209, 146.75.116.209
Connecting to repo1.maven.org (repo1.maven.org)|2a04:4e42:8d::209|:80... connected.
HTTP request sent, awaiting response... 501 HTTPS Required
2024-01-25 21:56:41 ERROR 501: HTTPS Required.

:arrow_right: This information is out of date the URL needs to have https

Then, I ran

$ javac -version
javac 17.0.8
$ javac \
  -cp error_prone_refaster-2.3.1.jar \
  "-Xplugin:RefasterRuleCompiler --out ${PWD}/myrule.refaster" \
  StringIsEmpty.java
Exception in thread "main" java.lang.IllegalAccessError: class com.google.errorprone.refaster.RefasterRuleCompiler (in unnamed module @0x6b143ee9) cannot access class com.sun.tools.javac.api.BasicJavacTask (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.api to unnamed module @0x6b143ee9
        at com.google.errorprone.refaster.RefasterRuleCompiler.init(RefasterRuleCompiler.java:51)
        at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugin(BasicJavacTask.java:255)
        at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugins(BasicJavacTask.java:229)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:292)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176)
        at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
        at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)

:arrow_right: compile instructions are either out of date or not fool proof

A look at the maven repo reveals that the current version is 2.24.1, I get the same error however.

:arrow_right: error_prone_refaster version needs to be updated

trebele-tibco commented 9 months ago

I had the same error. I got it working for my purposes with Java 11.

renannprado commented 6 months ago

I have the same issue, but I've just tried to use error-prone with Java 21.