我正在尝试将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());
}
}
VS Code 提出了三个问题:
- 导入
me.parent.jModule.WithinModule
无法解决:AccessScala[3,8]
WithinModule
无法解析为类型:AccessScala [7,9]
WithinModule
无法解析为类型:AccessScala [7,35]
项目设置
该项目有两个模块,但现在只有jModule
相关的。它在不同的文件夹中包含Java和Scala代码。sModule
包含一些我也想访问的Scala代码,但我当前的问题与Maven模块以及理解Scala - Java连接的 VS Code 无关。
> 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
VS 代码
我正在使用Java 扩展包、Scala-Metals和 Scala 语法
对于Java和Scala,它都会检测错误等,因此它知道 Scala 就在那里。
问题
为什么 VS Code 会抱怨,我能做些什么来完成这项工作?有没有办法,或者我只需要使用 IntelliJ(我还有其他问题,请继续关注这些问题;)