如何从InetAddress.java(或libcore/luni/src/main/java/java/net中的任何文件)导入android.util.Log?[不是一个]

如何从InetAddress.java(或libcore/luni/src/main/java/java/net中的任何文件)导入android.util.Log?[不是一个],java,import,makefile,android-source,Java,Import,Makefile,Android Source,我不能直接使用以下任何一种说法 import android.util.Log; 或 从libcore/luni/src/main/java/java/net中的InetAddress.java,也不能使用依赖于它的任何文件。我正在使用的一个组的成员创建了一个依赖于android.os.Environment的类,并在AOSP中的其他地方成功地使用了它,如packages/apps/PackageInstaller/src/com/android/PackageInstaller/packa

我不能直接使用以下任何一种说法

import android.util.Log; 

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

我不是100%确定没有替代方法来完成他创建的类要完成的任务,但是为了一致性,如果可能的话,我更愿意在InetAddress.java中重复使用他的代码

我收到的错误消息是

Error: no package named android.os
Error: no package named android.util 
我在谷歌上搜索解决方案后发现,该解决方案建议删除这些行以便能够从标准库导入
LOCAL\u NO\u standard\u LIBRARY=true

按照这个建议,我搜索了最接近InetAddress.java的父目录,该目录有一个Android.mk文件,并尝试编辑它,发现它没有显示
LOCAL\u no\u STANDARD\u LIBRARY=true的行
但它确实调用了JavaLibrary.mk,它确实包含了这些行。在对它们进行注释并重新生成后,运行make后,输出中出现以下行:

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

make:Circular out/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/classes-full-debug.jar问题是makefile工作不正常。。。因为你在做什么

这些错误:

Error: no package named android.os
Error: no package named android.util 
。。。这意味着当编译器编译
InetAddress.java
时,这些包不在类路径上。我怀疑这是故意的;i、 e.避免或最小化Java子集包和Android特定包之间的循环依赖关系。似乎您正试图对
InetAddress
进行更改或注入更改,以打破构建假设;i、 e.它们在模块之间创建循环依赖关系,这些模块将以有序/部分有序的顺序构建

那么这个,

Fatal Error: Unable to find package java.lang in classpath 
             or bootclasspath
说你让事情变得更糟了。但它指向了同一个方向——编译时类路径问题


如何修复它

坦白地说,我不知道它是否能被修复。但如果可能的话,很可能需要对android模块化及其makefiles进行重大修改



注:这与进口在语言层面的工作方式无关。这是关于编译器在哪里寻找要导入的类(即,
javac
命令行选项告诉它在哪里寻找)以及这些类是否已经编译(尚未编译)。

它们在问题的第一句中。不过,感谢您的评论,因为我确实意识到我可以改进格式,使人们能够更轻松地解析出重要信息。通配符副本完全脱离主题,与主题无关。如果有任何其他副本实际上是类似的,请更正链接。否则,请删除重复标志或指示我如何执行此操作。我指定了两个我在导入时遇到困难的特定包,并且它显然没有在任何地方使用任何通配符。这是一个非常完整的答案,尽管显然不是我希望的答案。除非另一个答案允许我很快导入这些包,否则我很乐意将其标记为已接受。我担心会出现这种情况,但作为一名花费99%时间在python上的程序员,我希望更熟悉java/compilers/makefiles的人会知道一些我没有知道的方法来实现它。
Fatal Error: Unable to find package java.lang in classpath 
             or bootclasspath