Eclipse против различий в ручной компиляции - PullRequest
0 голосов
/ 02 января 2019

У меня есть этот кусок кода:

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

Когда я использую его как часть моего проекта Eclipse, все идет хорошо, но когда я компилирую тот же файл .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 голосов
/ 02 января 2019

Ошибка говорит вам, что вы используете метод Class.getPackageName(), который не существует.Глядя на , его javadoc показывает, что этот метод существует, но начиная с Java 9.

Вывод: вы используете Java 9 или новее в Eclipse, но Java 8 или новее в командной строке.

Решите, какую актуальную версию Java вы хотите использовать, и везде используйте эту же версию.Затем прочитайте javadoc этой версии JDK, чтобы узнать, какие методы доступны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...