java - 在 libcore/luni/src/main/java/java/net)? [Not a ] 中,如何从 InetAddress.java ( 或者任何文件) 导入 android.util.Log

  显示原文与译文双语对照的内容
146 0

我不能直接使用下列语句之一

import android.util.Log; 

或者

import android.os.Environment;

从 InetAddress.java 到 libcore/luni/src/main/java/java/net,,我也不能使用任何依赖它的文件。我使用的组成员创建了一个依赖于 android.os.Environment的类,并在AOSP中成功地使用了它,比如 packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java 。

我们并没有为完成他创建的类而确定alternative方法,但为了一致性,我宁愿在中使用他的代码,如果有可能的话。

我收到的错误消息是

Error: no package named android.os
Error: no package named android.util 

搜索到这些资源后,我发现了 ,它建议删除这些行,以便能够从标准库中导入这些行

按照这个建议,我搜索最接近 InetAddress.java的父目录,它有一个 android.mk 文件,尝试编辑它,看到它没有行,看到了 LOCAL_NO_STANDARD_LIBRARY = true; 但它确实调用了那些行。在注释并重新生成后,运行后输出中出现以下行:

make: Circular out/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/classes-full-debug.jar <- out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes.jar dependency dropped.
make: Circular out/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/classes-full-debug.jar <- out/target/common/obj/JAVA_LIBRARIES/conscrypt_intermediates/classes.jar dependency dropped.
make: Circular out/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/classes-full-debug.jar <- out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar dependency dropped.
make: Circular out/target/common/obj/JAVA_LIBRARIES/okhttp_intermediates/classes-full-debug.jar <- out/target/common/obj/JAVA_LIBRARIES/conscrypt_intermediates/classes.jar dependency dropped.
make: Circular out/target/common/obj/JAVA_LIBRARIES/okhttp_intermediates/classes-full-debug.jar <- out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar dependency dropped.
make: *** [out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
make: *** [out/target/common/obj/JAVA_LIBRARIES/okhttp_intermediates/classes-full-debug.jar] Error 41
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
make: *** [out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes-full-debug.jar] Error 41

如果需要,我可以发布完整的输出,但这些行是构建过程正常输出的唯一行。

在第一个地方提供使用 android.os的解答或者评论当然很感谢,但是我希望在所有可以能的情况下使用。

时间: 原作者:

117 3

问题是生成文件工作不正常。对于你正在尝试的。

这些错误:

Error: no package named android.os
Error: no package named android.util 

。意味着编译器编译 InetAddress.java 时,这些软件包不在类路径上。在设计时,我怀疑这是的;为了避免或者减少java子集包与android特定包之间的循环依赖,。看起来你正在试图对构建的InetAddress 进行更改或者注入更改;换句话说,在模块之间创建循环依赖,这些模块在有序/偏序顺序中创建。

然后是:

Fatal Error: Unable to find package java.lang in classpath 
 or bootclasspath

说你把事情worse了。但是它指向相同的一般方向- compile编译时类路径问题。

如何修复它?

说实话,我不知道它是否能修复。但是如果可以能的话,可以能需要对android模块化及它的生成器进行重要的改进。

注:这不是关于导入在语言级别的工作方式的问题。所有这些都是关于编译器在哪里寻找导入的类( 例如 。javac 命令行 选项告诉它 look look,以及这些类是否已经编译过了。

原作者:
...