Scala无法访问Java方法
所以,我用Java写了一些东西,我想用Scala扩展它。。。我遇到的问题是Scala没有看到我需要的方法 以下是它的设置方式: 玩家扩展怪物,怪物扩展实体 我需要在Player中访问一个方法,该方法没有在Mob或Entity中定义,但Scala认为它不存在,即使Java确实存在 它可以很好地看到由Mob和Entity定义的方法。而且,我所说的所有方法都是非静态的 那么,我是做错了什么,还是这是Scala强加的限制 编辑-- 以下是相关代码:Scala无法访问Java方法,java,scala,interop,Java,Scala,Interop,所以,我用Java写了一些东西,我想用Scala扩展它。。。我遇到的问题是Scala没有看到我需要的方法 以下是它的设置方式: 玩家扩展怪物,怪物扩展实体 我需要在Player中访问一个方法,该方法没有在Mob或Entity中定义,但Scala认为它不存在,即使Java确实存在 它可以很好地看到由Mob和Entity定义的方法。而且,我所说的所有方法都是非静态的 那么,我是做错了什么,还是这是Scala强加的限制 编辑-- 以下是相关代码: package test import rsca.g
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类时,请执行以下操作:
scalac *.scala *.java
通过这种方式,Scala将查看Java代码中的可用内容。但是,如果Java代码已经编译并作为jar文件提供,只需将其添加到编译Scala代码时使用的类路径中即可。我从未遇到过此类问题,您可能已经检查了配置和其他所有内容两次,因此我猜这是与Eclipse相关的构建问题。您应该尝试从命令行进行构建,以查看Scala或Eclipse是否是问题所在。是否可以对该类运行测试,以查看是否得到了正确的测试
p.getClass.getMethods
。。。如果可能(可能会进入NPE)以找到来源:
p.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
贴了一些,但是间距被弄乱了。很抱歉。Scala没有看到什么
getActionSender()
或SendTelebuble(0,0,false)代码>?哦,还有一个愚蠢的问题,但是玩家、暴徒和实体在类路径中吗?我们希望看到编译的命令行,以及完整、漂亮的错误代码。谢谢。12345,你能启动指向你的jar的scala解释器,看看你能不能创建一个类型为Player的对象并调用它的方法吗scala-classpath-your.jar
无法修复它,Eclipse处理得很好。Eclipse中没有错误表明将其添加到类路径失败,等等@RandomGuy Oh。。。日食。。。Eclipse有一些bug。我会查找Eclipse线程。