缺少com.sun.jdi.InterfaceType中的invokeMethod

时间:2015-07-14 19:48:09

标签: java java-8

在Oracle Javadocs for Java 8中,指定InterfaceType具有名为invokeMethod的方法。

但是,当我查看我的系统时,我在界面中看不到任何此类方法:

kshitiz:/usr/lib/jvm/jdk1.8.0/lib$ javap -classpath tools.jar com.sun.jdi.InterfaceType
Compiled from "InterfaceType.java"
public interface com.sun.jdi.InterfaceType extends com.sun.jdi.ReferenceType {
  public abstract java.util.List<com.sun.jdi.InterfaceType> superinterfaces();
  public abstract java.util.List<com.sun.jdi.InterfaceType> subinterfaces();
  public abstract java.util.List<com.sun.jdi.ClassType> implementors();
}

Java版本检查:

kshitiz:/usr/lib/jvm/jdk1.8.0/lib$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

我错过了什么?

1 个答案:

答案 0 :(得分:2)

在测试不同版本后,似乎Oracle已在次要更新u40中添加了该方法。以下版本没有这种方法。

在JDK上1.8.0_40

Compiled from "InterfaceType.java"
public interface com.sun.jdi.InterfaceType extends com.sun.jdi.ReferenceType {
  public abstract java.util.List<com.sun.jdi.InterfaceType> superinterfaces();
  public abstract java.util.List<com.sun.jdi.InterfaceType> subinterfaces();
  public abstract java.util.List<com.sun.jdi.ClassType> implementors();
  public com.sun.jdi.Value invokeMethod(com.sun.jdi.ThreadReference, com.sun.jdi.Method, java.util.List<? extends com.sun.jdi.Value>, int) throws com.sun.jdi.InvalidTypeException, com.sun.jdi.ClassNotLoadedException, com.sun.jdi.IncompatibleThreadStateException, com.sun.jdi.InvocationException;
}

我对此感到惊讶,因为这种结构变化应该只发生在主要版本之间,而不是在次要版本之间。但是,com.sun包被视为私有Oracle API和subject to change anytime