包com.sun.tools.javac.code在JDK17中不可见。

huangapple go评论104阅读模式
英文:

package com.sun.tools.javac.code is not visible in JDK17

问题

我尝试访问JDK17中的包com.sun.tools.javac.code。有人说可以添加以下VM参数:

  1. <compilerArgs>
  2. <arg>-Werror</arg>
  3. <arg>-Xlint:all</arg>
  4. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
  5. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
  6. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
  7. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
  8. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
  9. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
  10. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
  11. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
  12. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
  13. </compilerArgs>

pom.xml

  1. <modelVersion>4.0.0</modelVersion>
  2. <groupId>org.example</groupId>
  3. <artifactId>demo</artifactId>
  4. <version>1.0-SNAPSHOT</version>
  5. <properties>
  6. <java.version>17</java.version>
  7. <maven.compiler.source>17</maven.compiler.source>
  8. <maven.compiler.target>17</maven.compiler.target>
  9. </properties>
  10. <build>
  11. <plugins>
  12. <plugin>
  13. <groupId>org.apache.maven.plugins</groupId>
  14. <artifactId>maven-compiler-plugin</artifactId>
  15. <version>3.8.0</version>
  16. <configuration>
  17. <source>${java.version}</source>
  18. <target>${java.version}</target>
  19. <showDeprecation>true</showDeprecation>
  20. <showWarnings>true</showWarnings>
  21. <fork>true</fork>
  22. <compilerArgs>
  23. <arg>-Werror</arg>
  24. <arg>-Xlint:all</arg>
  25. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
  26. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
  27. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
  28. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
  29. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
  30. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
  31. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
  32. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
  33. <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
  34. </compilerArgs>
  35. </configuration>
  36. </plugin>
  37. </plugins>
  38. </build>
  39. </project>

然而,我仍然遇到编译错误:
error: package com.sun.tools.javac.code is not visible

我如何在jdk17中访问com.sun.tools.javac.code?我必须访问这个API,不想使用其他方式。

英文:

I tried to access the package com.sun.tools.javac.code in JDK17. Someone said can add the VM args as below:

  1. &lt;compilerArgs&gt;
  2. &lt;arg&gt;-Werror&lt;/arg&gt;
  3. &lt;arg&gt;-Xlint:all&lt;/arg&gt;
  4. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED&lt;/arg&gt;
  5. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED&lt;/arg&gt;
  6. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED&lt;/arg&gt;
  7. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED&lt;/arg&gt;
  8. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED&lt;/arg&gt;
  9. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED&lt;/arg&gt;
  10. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED&lt;/arg&gt;
  11. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED&lt;/arg&gt;
  12. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED&lt;/arg&gt;
  13. &lt;/compilerArgs&gt;

pom.xml

  1. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  2. &lt;groupId&gt;org.example&lt;/groupId&gt;
  3. &lt;artifactId&gt;demo&lt;/artifactId&gt;
  4. &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  5. &lt;properties&gt;
  6. &lt;java.version&gt;17&lt;/java.version&gt;
  7. &lt;maven.compiler.source&gt;17&lt;/maven.compiler.source&gt;
  8. &lt;maven.compiler.target&gt;17&lt;/maven.compiler.target&gt;
  9. &lt;/properties&gt;
  10. &lt;build&gt;
  11. &lt;plugins&gt;
  12. &lt;plugin&gt;
  13. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  14. &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
  15. &lt;version&gt;3.8.0&lt;/version&gt;
  16. &lt;configuration&gt;
  17. &lt;source&gt;${java.version}&lt;/source&gt;
  18. &lt;target&gt;${java.version}&lt;/target&gt;
  19. &lt;showDeprecation&gt;true&lt;/showDeprecation&gt;
  20. &lt;showWarnings&gt;true&lt;/showWarnings&gt;
  21. &lt;fork&gt;true&lt;/fork&gt;
  22. &lt;compilerArgs&gt;
  23. &lt;arg&gt;-Werror&lt;/arg&gt;
  24. &lt;arg&gt;-Xlint:all&lt;/arg&gt;
  25. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED&lt;/arg&gt;
  26. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED&lt;/arg&gt;
  27. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED&lt;/arg&gt;
  28. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED&lt;/arg&gt;
  29. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED&lt;/arg&gt;
  30. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED&lt;/arg&gt;
  31. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED&lt;/arg&gt;
  32. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED&lt;/arg&gt;
  33. &lt;arg&gt;-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED&lt;/arg&gt;
  34. &lt;/compilerArgs&gt;
  35. &lt;/configuration&gt;
  36. &lt;/plugin&gt;
  37. &lt;/plugins&gt;
  38. &lt;/build&gt;

</project>

However, I still got a compiler error:
error: package com.sun.tools.javac.code is not visible

How can I access the com.sun.tools.javac.code in jdk17?
I must access this API and don't want use other ways.

答案1

得分: 1

You'll need to add the --add-exports switch.
Specifically, "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED".

从JDK 8迁移到较新的JDK版本.

If that does not work, try referring to the following question.
StackOverflow – error: package com.sun.tools.javac.util does not exist.

英文:

You'll need to add the --add-exports switch.
Specifically, "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED".

Migrating From JDK 8 to Later JDK Releases.

If that does not work, try referring to the following question.
StackOverflow &ndash; error: package com.sun.tools.javac.util does not exist.

huangapple
  • 本文由 发表于 2023年6月25日 19:46:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/76550233.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定