Son*_*e W 5 java scala maven visual-studio-code scala-metals
我正在尝试将Scala与Java进行互操作,并成功创建了一个基于Maven的项目(此处为存储库),该项目可以从命令行 ( mvn clean package) 进行良好的编译。
然而,我一直遇到这样的问题:我的 IDE(VS Code)根本不理解互操作。
该文件AccessScala.java正在尝试访问 中的变量WithinModule.scala。
package me.parent.jModule;
import me.parent.jModule.WithinModule;
public class AccessScala {
public static void main(String[] args) {
WithinModule within = new WithinModule();
// -- this is like a static variable, but Scala doesn't allow that
// System.out.println(WithinModule.string());
// -- this is the auto-generated getter
System.out.println(within.string());
// -- this getter was manually added
System.out.println(within.getString());
}
}
Run Code Online (Sandbox Code Playgroud)
VS Code 引发了三个问题:
me.parent.jModule.WithinModule无法解决:AccessScala[3,8]WithinModule无法解析为类型:AccessScala [7,9]WithinModule无法解析为类型:AccessScala [7,35]该项目有两个模块,但目前只有两个jModule模块相关。它在不同的文件夹中包含Java和Scala代码。sModule包含一些我也想访问的Scala代码,但我当前的问题与Maven模块无关,并且与 VS Code 理解Scala - Java连接的所有内容无关。
> parent
| > jModule
| | > src/main
| | | > java/me/parent/jModule
| | | | > AccessScala.java
| | | > scala/me/parent/jModule
| | | | > WithinModule.scala
| | > build.sbt
| | > project/build.properties
| | > pom.xml
| > sModule
| | > src/scala/me/parent/sModule
| | | >ExternalModule.scala
| | > pom.xml
| | > build.sbt
| | > project/build.properties
| > build.sbt
| > project/build.properties
| > pom.xml
Run Code Online (Sandbox Code Playgroud)
我正在使用Java 扩展包、Scala-Metals和 Scala 语法
对于Java和Scala,它都会检测错误等,因此它知道 Scala 存在。
为什么 VS Code 会抱怨,我该怎么做才能使其正常工作?有没有办法,或者我只需要使用 IntelliJ (我还有其他问题,请继续关注这些问题;)
小智 5
Visual Studio Code 的 Java 和 Scala 语言支持都基于 LSP(语言服务器协议),目前尚不允许通过简单的方法使不同语言服务器协同工作。
Metals 目前可以通过 Bloop(构建服务器)或通过 Sbt 或 Mill 等构建工具编译 Scala 和 Java。然而,它缺乏 Java 支持所需的大部分支持。Java LSP服务器目前根本无法编译Scala,因此不建议在混合项目中使用它。
我们即将在 Metals 中提供更多 Java 支持,请观看此 PR或此问题以了解详细信息,我们计划进一步开展工作。
如果您需要一些认真的重构和自动化,建议当前使用 Intellij Idea。Metals 应该是一个更轻量级的替代品,并且还支持一系列不同的编辑器,例如 Vim、Emacs 或 Sublime。它从来不是为了提供一对一的体验,而是为了给用户提供一种选择。
| 归档时间: |
|
| 查看次数: |
1958 次 |
| 最近记录: |