Поскольку вы выполняете это в командной строке, нет причин, по которым пакеты / классы Android должны быть доступны для среды выполнения, если они явно не включены.Вывод вашей программы имеет смысл - если вы не предоставите в программу правильные библиотеки Android, совпадения не будет, когда вы попытаетесь разрешить определенный класс Android, такой как Toast
.
Ответ, по сути, заключается в эффективном использовании пути к классам Java.По умолчанию, без указания аргумента, это рабочий каталог «.».
Добавьте к нему, используя -classpath в качестве аргумента.Наивно компилировать:
javac YourReflectionTest.java
, поскольку вы знаете, что программа не находит совпадений.
Если вы сделаете это, javac также преуспеет
javac -classpath ".;/opt/android-sdk/platforms/android-21/android.jar" YourReflectionTest.java
Если вы запустите программу,и попробуйте
java YourReflectionTest
Это все равно даст тот же результат.Зачем?Во время выполнения все еще не загружены классы Android.По умолчанию вы получите только системные библиотеки java, включенные в вашу установку JDK.
Но, если вы укажете подходящий путь во время выполнения, вдруг произойдет вся магия:
java -classpath ".;/opt/android-sdk/platforms/android-21/android.jar" YourReflectionTest
Обратите внимание, что API-интерфейс Android уровня 21 - это только пример, который можно использовать в зависимости от того, какие функции вы пытаетесь протестировать.