- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行反射来检查 Java 中是否存在某些 android 类(例如 Toast)。我正在使用以下代码从我的命令行运行它:
String [] packages = new String[] {"java.lang.",
"android.widget.",
"android.util.",
"android.app.",
"android.view.",
"android.content."};
for (int i = 0; i < packages.length; i++){
String package_name = packages[i];
try {
Class<?> clazz = Class.forName(package_name + "Toast");
System.out.println("class Exists");
return clazz;
}
catch (ClassNotFoundException e){
System.out.println("class " + package_name + "Toast doesnt exists");
}
}
但是,我得到了输出:类 android.widget.Toast 不存在(但我知道它确实存在,这是类所在的位置)有什么想法吗?
编辑:我正在尝试编写一个 Java 类,它不是从 Android Studios 运行,而是使用 cmd 行中的 javac 编译和运行。
最佳答案
因为您是在命令行上执行此操作,所以没有理由让 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 类。默认情况下,您只会获得 JDK 安装中包含的 Java 系统库。
但是,如果您在运行时提供了适当的路径,那么所有的魔法都会突然发生:
java -classpath ".;/opt/android-sdk/platforms/android-21/android.jar" YourReflectionTest
请注意,Android API 级别 21 在这里只是一个示例,可以根据您要测试的功能使用任何级别。
关于Java 反射 - 找不到 Android 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782978/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!