gradle KotlinVSCode扩展无法找到“mvn”命令

u4vypkhs  于 2023-06-23  发布在  Kotlin
关注(0)|答案(1)|浏览(211)

但在终端中,我可以看到一个Maven版本:

11:58 $ mvn --version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /home/stephane/.asdf/installs/maven/3.8.4
Java version: 15.0.2, vendor: AdoptOpenJDK, runtime: /home/stephane/.asdf/installs/java/adoptopenjdk-15.0.2+7
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-91-generic", arch: "amd64", family: "unix"

我正在使用asdf工具:

12:07 $ cat .tool-versions 
java adoptopenjdk-15.0.2+7
nodejs 12.13.1
tflint 0.28.1
terraform-validator 3.1.3
packer 1.7.2
terraform 0.15.3
adr-tools 3.0.0
pre-commit 1.21.0
maven 3.8.4

加载项目时,Kotlin控制台底部的“输出”窗格显示内容:

Dec 18, 2021 12:06:26 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError
SEVERE: Internal error: java.lang.IllegalArgumentException: Unable to find the 'mvn' command
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Unable to find the 'mvn' command
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Unable to find the 'mvn' command
    at org.javacs.kt.classpath.MavenClassPathResolverKt$mvnCommand$2.invoke(MavenClassPathResolver.kt:129)
    at org.javacs.kt.classpath.MavenClassPathResolverKt$mvnCommand$2.invoke(MavenClassPathResolver.kt:128)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.getMvnCommand(MavenClassPathResolver.kt:128)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.generateMavenDependencyList(MavenClassPathResolver.kt:106)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.access$generateMavenDependencyList(MavenClassPathResolver.kt:1)
    at org.javacs.kt.classpath.MavenClassPathResolver.getClasspathWithSources(MavenClassPathResolver.kt:37)
    at org.javacs.kt.classpath.UnionClassPathResolver.<init>(ClassPathResolver.kt:57)
    at org.javacs.kt.classpath.ClassPathResolverKt.plus(ClassPathResolver.kt:45)
    at org.javacs.kt.classpath.ClassPathResolverKt.getJoined(ClassPathResolver.kt:40)
    at org.javacs.kt.classpath.DefaultClassPathResolverKt.defaultClassPathResolver(DefaultClassPathResolver.kt:11)
    at org.javacs.kt.CompilerClassPath.refresh(CompilerClassPath.kt:37)
    at org.javacs.kt.CompilerClassPath.refresh$default(CompilerClassPath.kt:31)
    at org.javacs.kt.CompilerClassPath.addWorkspaceRoot(CompilerClassPath.kt:98)
    at org.javacs.kt.KotlinLanguageServer$initialize$1.invoke(KotlinLanguageServer.kt:117)
    at org.javacs.kt.KotlinLanguageServer$initialize$1.invoke(KotlinLanguageServer.kt:71)
    at org.javacs.kt.util.AsyncExecutor.compute$lambda-2(AsyncExecutor.kt:19)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    ... 3 more

[Error - 11:51:28 AM] Starting client failed
  Message: Internal error.
  Code: -32603 
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Unable to find the 'mvn' command
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Unable to find the 'mvn' command
    at org.javacs.kt.classpath.MavenClassPathResolverKt$mvnCommand$2.invoke(MavenClassPathResolver.kt:129)
    at org.javacs.kt.classpath.MavenClassPathResolverKt$mvnCommand$2.invoke(MavenClassPathResolver.kt:128)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.getMvnCommand(MavenClassPathResolver.kt:128)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.generateMavenDependencyList(MavenClassPathResolver.kt:106)
    at org.javacs.kt.classpath.MavenClassPathResolverKt.access$generateMavenDependencyList(MavenClassPathResolver.kt:1)
    at org.javacs.kt.classpath.MavenClassPathResolver.getClasspathWithSources(MavenClassPathResolver.kt:37)
    at org.javacs.kt.classpath.UnionClassPathResolver.<init>(ClassPathResolver.kt:57)
    at org.javacs.kt.classpath.ClassPathResolverKt.plus(ClassPathResolver.kt:45)
    at org.javacs.kt.classpath.ClassPathResolverKt.getJoined(ClassPathResolver.kt:40)
    at org.javacs.kt.classpath.DefaultClassPathResolverKt.defaultClassPathResolver(DefaultClassPathResolver.kt:11)
    at org.javacs.kt.CompilerClassPath.refresh(CompilerClassPath.kt:37)
    at org.javacs.kt.CompilerClassPath.refresh$default(CompilerClassPath.kt:31)
    at org.javacs.kt.CompilerClassPath.addWorkspaceRoot(CompilerClassPath.kt:98)
    at org.javacs.kt.KotlinLanguageServer$initialize$1.invoke(KotlinLanguageServer.kt:117)
    at org.javacs.kt.KotlinLanguageServer$initialize$1.invoke(KotlinLanguageServer.kt:71)
    at org.javacs.kt.util.AsyncExecutor.compute$lambda-2(AsyncExecutor.kt:19)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    ... 3 more

扩展日志显示:

[2021-12-18 11:51:28.974] [exthost] [error] Activating extension fwcd.kotlin failed due to an error:
[2021-12-18 11:51:28.975] [exthost] [error] Error: Internal error.
    at /home/stephane/.vscode/extensions/fwcd.kotlin-0.2.23/dist/extension.js:2:815204
    at /home/stephane/.vscode/extensions/fwcd.kotlin-0.2.23/dist/extension.js:2:815498
    at Immediate.<anonymous> (/home/stephane/.vscode/extensions/fwcd.kotlin-0.2.23/dist/extension.js:2:815863)
    at processImmediate (internal/timers.js:461:21)

它是一个Gradle主项目,项目根目录下有一个build.xml文件,还有Gradle子项目和Maven子项目。
子项目中有许多build.xmlpom.xmlgradlewgradlew.bat文件。
发布:

VSCode 1.63.2
Extensions:
Language Support for Java v1.2.0
Kotlin v0.2.23
xienkqul

xienkqul1#

在Ubuntu 20.0上,我也遇到了同样的问题,这是由于安装Maven引起的。mvn在VSCode终端中运行,但分机未找到。
我还尝试了另一个Stack Overflow答案:set maven extension settings in the user's settings.json但这一个仅适用于您可以在“Explorer”(VSCode的文件视图)内的“Maven”子部分中触发的命令。
对于Ubuntu,Maven需要从网站手动下载,因为Ubuntu APT包太旧了。
我的错误是编辑了.bashrc脚本中的PATH变量,该变量仅在shell环境中可见。看起来这个扩展不能在shell环境中运行命令。
当您为Ubuntu上的所有用户安装了Maven后,您可以在/etc/environment中编辑PATH变量。如果它只安装在本地-在我的例子中它位于~/apache-maven/bin中-你可以通过将maven的目录路径-在我的例子中是$HOME/apache-maven/bin-添加到PATH中来将目录添加到~/.profile(或~/.pam_environment)中的PATH变量中。这对我很有效。

相关问题