Eclipse与手动编译的区别

时间:2019-01-02 10:45:02

标签: java eclipse generics

我有这段代码:

String packageName = "";
    try {
        packageName = Class.forName(new Exception().getStackTrace()[1].getClassName()).getPackageName();
    } catch (ClassNotFoundException e2) { // TODO Auto-generated catch block
        e2.printStackTrace();
    }

当我将其用作Eclipse项目的一部分时,一切都很好,但是当我从Command Promt编译相同的.java文件时,出现以下错误:

symbol:   method getPackageName()
location: class Class<CAP#1>
 where CAP#1 is a fresh type-variable:
 CAP#1 extends Object from capture of ?
1 error

有什么方法可以改善这段代码,使其起作用吗?

1 个答案:

答案 0 :(得分:9)

该错误告诉您正在使用的方法Class.getPackageName()不存在。查看its javadoc表明该方法存在,但是自Java 9起。

结论:您在Eclipse中使用Java 9或更高版本,但在命令提示符下使用Java 8或更高版本。

确定要使用的Java的实际版本,并在所有地方使用相同的版本。然后阅读该JDK版本的javadoc,以了解可用的方法。