【问题标题】:Scala trouble accessing Java methodsScala 在访问 Java 方法时遇到问题
【发布时间】:2011-04-28 16:56:50
【问题描述】:

所以,我有一些用 Java 编写的东西,我想用 Scala 扩展它...我遇到的问题是 Scala 没有看到我需要的方法。

这是它的设置方式: Player 扩展 Mob,Mob 扩展 Entity。

我需要访问 Player 中未在 Mob 或 Entity 中定义的方法,但 Scala 认为它不存在,即使 Java 存在。

它可以很好地看到 Mob 和 Entity 定义的方法。另外,我所说的所有方法都是非静态的。

那么,我做错了什么,还是这是 Scala 强加的限制?

编辑—— 以下是相关代码:

package test

import rsca.gs.model.Player

object Test {
     def handle(p:Player): Unit = {
         p.getActionSender().sendTeleBubble(0, 0, false);
     }
}

播放器类:

package rsca.gs.model;        
    // imports        
public final class Player extends Mob {
        //  Implemented methods (not going to post them, as there are quite a few)    
        // Relevant code
        private MiscPacketBuilder actionSender;
        public MiscPacketBuilder getActionSender() {
        return actionSender;
    }
}

错误: value getActionSender 不是 rsca.gs.model.Player 的成员

【问题讨论】:

  • 发布了一些,但间距被破坏了。对此感到抱歉。
  • Scala 看不到 getActionSender()sendTeleBubble(0, 0, false); 的原因是什么?
  • 哦,又是一个愚蠢的问题,但是类路径中有 Player、Mob 和 Entity 吗?
  • 我们希望看到您的编译命令行,以及完整、漂亮的错误代码。谢谢。
  • @RandomGuy12345,您能否启动指向您的 jar 的 scala 解释器,看看您是否可以创建一个 Player 类型的对象并调用它的方法? scala -classpath your.jar

标签: java scala interop


【解决方案1】:

我从来没有遇到过这样的问题,你可能检查了你的配置和其他一切两次,所以我猜这是一些 Eclipse 相关的构建问题。您应该尝试从命令行构建,以查看问题是 Scala 还是 Eclipse。

【讨论】:

    【解决方案2】:

    您是否可以对班级进行测试以查看是否正确?

    p.getClass.getMethods
    

    ...如果可能(可能会遇到 NPE)以找到源:

    p.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
    

    【讨论】:

      【解决方案3】:

      编译 Scala 类时,请执行以下操作:

      scalac *.scala *.java
      

      这样,Scala 将查看 Java 代码以查看可用的内容。但是,如果 Java 代码已经编译并作为 jar 文件提供,只需将其添加到编译 Scala 代码时使用的类路径中。

      【讨论】:

      • 这并不能解决问题,Eclipse 可以很好地处理它。 Eclipse 中没有错误表明它无法将其添加到类路径等。
      • @RandomGuy 哦... Eclipse... Eclipse 存在错误。我会查找 Eclipse 线程。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多