我遵循的方法是:https://sourcegraph.github.io/scip-java/docs/getting-started.html
在我正在运行的项目的根目录中: docker -v $(pwd):/home/gradle sourcegraph/scip:最新的scip-java索引-构建-工具=gradle
但是,在运行此命令时,我会得到以下错误:
Exception in thread "main" java.lang.IllegalAccessError: class com.sourcegraph.semanticdb_javac.SemanticdbPlugin (in unnamed module @0x1794d431) 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 @0x1794d431在入门指南中,它说Java 17需要自定义附加导出(https://sourcegraph.github.io/scip-java/docs/getting-started.html#java)。
对于Java 17和更新版本,需要以下JVM选项:
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED我尝试过各种方法来添加这些选项,但是没有能够正确地完成(下面是我尝试过的一些事情和相应的错误)
docker run -e JAVA_OPTS="--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" -v $(pwd):/home/gradle sourcegraph/scip-java:latest scip-java index --build-tool=gradle使用JVM版本'temurin:17‘无法识别的选项:--添加-导出错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:--添加导出错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。
docker run -e JAVA_OPTS="jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" -v $(pwd):/home/gradle sourcegraph/scip-java:latest scip-java index --build-tool=gradle使用JVM版本'temurin:17‘错误:无法找到或加载主类jdk.compiler.com.sun.tools.javac.api=ALL-UNNAMED错误:无法找到或加载主类jdk.compiler.com.sun.tools.javac.api=ALL-UNNAMED
我对Java编程没有非常基本的经验,目前,我的主要目标是对存储库进行索引,并测试Sourcegraph精确的代码智能工具。(我正在尝试索引:https://github.com/spring-projects/spring-framework)
如何添加这些JVM选项?
编辑:
我尝试使用Holdger的方式(从评论中),但仍然得到相同的错误。
docker run -e JDK_JAVA_OPTIONS="--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" -v $(pwd):/home/gradle sourcegraph/scip-java:latest scip-java index --build-tool=gradle我得到的错误消息是(它只是任务失败的部分):
注意:选中的jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED:--在线程"main“中添加-导出java.lang.IllegalAccessError异常: com.sourcegraph.semanticdb_javac.SemanticdbPlugin类(在未命名模块@0x1794d431中)无法访问类com.sun.tools.javac.api.BasicJavacTask (在模块jdk.compiler中),因为在com.sourcegraph.semanticdb_javac.SemanticdbPlugin.init(SemanticdbPlugin.java:上,模块jdk.compiler没有将com.sun.tools.javac.api导出到未命名模块@0x1794d431。19)在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(Mainjdk.compiler/com.sun.tools.javac.Main.main(Main.java:50) ( .java:64)
发布于 2022-08-25 15:54:03
我留下了一条评论,但没有得到回应。希望这个能起作用。
这应该用这个PR:https://github.com/sourcegraph/scip-java/pull/464来修正
试着重新运行
$ docker run -v $(pwd):/home/gradle sourcegraph/scip-java:latest scip-java index --build-tool=gradlehttps://stackoverflow.com/questions/72730404
复制相似问题