Java 爪哇<-&燃气轮机;Scala转换-“;值不是“的成员”;

Java 爪哇<-&燃气轮机;Scala转换-“;值不是“的成员”;,java,scala,type-conversion,Java,Scala,Type Conversion,我对Java方法的Scala代码有一个问题 它正在呼叫: value getDepth is not a member of amqpManagment.utils.data.ChessObject var depth: Int = chessObjects.getDepth() ^ 然而,我在Java代码的许多其他地方使用了getDepth,它工作得很好。 同样,在输入代码后,它在InteliJ中工作了几个小时,这很奇怪,但

我对Java方法的Scala代码有一个问题

它正在呼叫:

value getDepth is not a member of amqpManagment.utils.data.ChessObject
var depth: Int = chessObjects.getDepth()
                                  ^
然而,我在Java代码的许多其他地方使用了getDepth,它工作得很好。 同样,在输入代码后,它在InteliJ中工作了几个小时,这很奇怪,但可能项目在那个次更改后并没有重建自己

然而InteliJ显示代码是正确的,但在编译过程中它显示错误。通过InteliJ或终端进行重建没有帮助

Scala代码:

import amqpManagment.utils.data.ChessObject
object ChessScheduler {

  // DEPTH GAME
  def startGameWithDepthRule(chessObject: ChessObject) : Integer = 
  {
    ...
    val depth: Int = chessObjects.getDepth()
    ...
  }
}
Java代码:

@Getter
@Setter
public class ChessObject {
    private Integer depth;
    ...
}
构建.sbt

import sbt.Keys._
import sbt.Level

name := "ChessEngineModuler"
logLevel := Level.Warn

version := "1.0"

scalaVersion := "2.12.2"
感谢您的帮助。

看起来您正在使用自动生成getter。请添加lombok依赖项

libraryDependencies += "org.projectlombok" % "lombok" % "1.16.16"
如果您单独构建Java项目,并且该项目具有lombok作为编译时依赖项,则不需要执行上述步骤。然后生成的jar文件必须已经有了所有的getter

关于Intellij有时显示错误的原因,可能是您没有从文件->设置->构建、执行、部署->编译器->注释处理器启用注释处理。

看起来您正在使用自动生成getter。请添加lombok依赖项

libraryDependencies += "org.projectlombok" % "lombok" % "1.16.16"
如果您单独构建Java项目,并且该项目具有lombok作为编译时依赖项,则不需要执行上述步骤。然后生成的jar文件必须已经有了所有的getter

关于Intellij有时显示错误的原因,可能是您没有从文件->设置->构建、执行、部署->编译器->注释处理器启用注释处理。

Hello@Chenna Reddy:)

谢谢你的帖子,看起来这确实是龙目山的问题。然而,在你回答之后,我意识到这是一个问题,因为Scala代码是在JavaOne之前编译的

我检查了三个解决方案,因为我在处理器上添加了依赖项和注释

  • 第一个解决方案只是将getter和setter添加到Java类中,而不是通过Lombok,不过这是一个丑陋的解决方案

  • 第二种解决方案是添加文件->设置->构建、执行、部署->编译器->Scala编译器->编译顺序->Java,然后是Scala

  • 第三个设置在build.sbt->
    compileOrder:=compileOrder.JavaThenScala

  • 如果我们想在某个地方部署代码,我认为第三个是最好的:)

    Hello@Chenna Reddy:)

    谢谢你的帖子,看起来这确实是龙目山的问题。然而,在你回答之后,我意识到这是一个问题,因为Scala代码是在JavaOne之前编译的

    我检查了三个解决方案,因为我在处理器上添加了依赖项和注释

  • 第一个解决方案只是将getter和setter添加到Java类中,而不是通过Lombok,不过这是一个丑陋的解决方案

  • 第二种解决方案是添加文件->设置->构建、执行、部署->编译器->Scala编译器->编译顺序->Java,然后是Scala

  • 第三个设置在build.sbt->
    compileOrder:=compileOrder.JavaThenScala


  • 如果我们想在某个地方部署代码,我认为第三个是最好的:)

    错误消息准确吗?复制粘贴中有错误吗?缺少一个点:
    chessObjects
    getDepth()
    Hello@jwvh,是的,我刚才在这个问题上打了个错,是关于那个代码的。我现在就编辑它。谢谢:)您有scala中的
    CheeJSONObject
    ,但是java中的
    ChessObject
    。这些是不同的班级。也许,前者有
    getDepth
    ,后者没有?Heyo@Dima,你说得对,但这也不是问题:/i我只是更改它的名称,以不打扰你从这个文件创建JSON,因为它是本地问题。抱歉给您带来不便:(我认为这是InteliJ没有看到的问题,只是编译不正确并且失败了):/错误消息准确吗?复制粘贴中有错误吗?缺少一个点:
    chessObjects
    getDepth()
    Hello@jwvh,是的,我刚才在这个问题上打了个错,是关于那个代码的。我现在就编辑它。谢谢:)你有scala中的
    CheeJSONObject
    ,但java中的
    ChessObject
    。这些是不同的班级。也许,前者有
    getDepth
    ,后者没有?Heyo@Dima,你说得对,但这也不是问题:/i我只是更改它的名称,以不打扰你从这个文件创建JSON,因为它是本地问题。不便之处,敬请原谅:(我认为这是一件一开始就没有看到的事情,因为InteliJ没有看到问题,只是编译不正确并且失败了:/FWIW,我喜欢第一个解决方案。或者只是公开变量。解决方案#2对我有效。我的最初设置为mixed.FWIW,我喜欢第一个解决方案。或者只是公开变量。解决方案#2对我有效。我的最初设置为混合。