- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要知道我在 gradle 项目中使用的所有依赖项的 Java 运行时兼容性(可以这么说,就好像它正在检查每个项目的“sourceCompatibility”设置),最好不要仔细阅读每个依赖项的文档来找到它(如果它存在的话)。有没有办法用 gradle 来做到这一点?或者甚至其他一些自动化工具?
(具体来说,我正在尝试查看哪些依赖项可能使用 Streams 等 Java 8 功能,因为我正在尝试使用 Retrolambda 为 Android 进行编译,并使用 RoboVM 为 iOS 进行编译。)
最佳答案
此类信息可能不存在,并且生成起来非常繁琐。
“sourceCompatibility”在源代码编译后并不存在——它只是告诉编译器如何解释源代码语法。您更可能感兴趣的是“targetCompatibility”,或者类文件格式的主要版本:Java 8 是 52,Java 7 是 51 等。
这告诉 Java,Java 8 需要理解类格式和类中包含的字节码,因此您可以下载并解压项目中的每个依赖项及其所有依赖项,然后查看每个类文件的版本号,除了...
仅仅查看类文件格式版本并不能告诉您该类是否引用了仅存在于特定版本的 JDK 中的方法和字段。我没有使用 Java 8 进行测试,但在 Java 7 中,可以将源/目标兼容性设置为 1.6,并且仍然引用 Java 7 中添加的新方法。Java 6 JVM 将加载并运行该文件,但会失败并显示 NoSuchMethodException
,尽管其他方面看起来非常正常。
实际检查依赖项是否与编译时的 Java 版本完全兼容的唯一方法是遍历每个类的常量池,找到每个类和方法引用,然后验证它们对于所需的 JRE 是否有效。
您需要一个自动化工具来完成此任务(如果您安装了所需的 Java 版本并且单元测试覆盖率达到 100%,则 JVM 可以做到这一点...),但我不知道有哪个独立工具可以做到这一点,而且 gradle 和项目文档通常都不包含此类信息。
关于java - 如何列出 gradle 项目的所有依赖项的 JDK 兼容性(如 "sourceCompatibility")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222463/
我想为 Java library 定义源 和目标兼容性这是用 Gradle 构建的。因此,我添加了以下 block as documented for the Java plugin . apply
我的机器上安装了 Java 6 和 7。 Gradle 使用 1.7(使用 gradle -v 检查)。但我需要编译我的代码以与 Java 1.6 兼容。据我了解的文档,我可以使用 sourceCom
sourceCompatibility 和 targetCompatibility 之间有什么关系/区别?当它们被设置为不同的值时会发生什么? 根据Gradle documentation : sou
我所知道的 我对 build.gradle 中的常见设置非常熟悉 minSdkVersion 21 - 意味着 Android 设备至少需要 Android API 级别 21 或更高级别才能安装我的
我安装了jdk1.8.0_112,在build.gradle中写了下面的代码 compileOptions { sourceCompatibility JavaVersion.VER
这个问题在这里已经有了答案: Java type inference: reference is ambiguous in Java 8, but not Java 7 (2 个答案) 关闭 7 年
我正在为具有的 android aar 库进行绑定(bind) compileOptions { sourceCompatibility JavaVersion.VERSION_1_8
我在 Android 应用上收到 java.lang.NoClassDefFoundError 错误。我设法将问题隔离到对 List::replaceAll 的调用。问题是该方法适用于 Java 8,
我正在尝试在 android 应用程序中使用 Java11 API,但未能使其编译。 失败的步骤: 使用当前版本的 Android Studio 4.1.2 - 生成虚拟项目“基本 Activity
我需要知道我在 gradle 项目中使用的所有依赖项的 Java 运行时兼容性(可以这么说,就好像它正在检查每个项目的“sourceCompatibility”设置),最好不要仔细阅读每个依赖项的文档
我找不到任何有关 Java 版本的信息可用于 Android Gradle 'sourceCompatibility' 的选择和“目标兼容性”。 我可以获得当前的Java JDK路径,例如:'C:/P
设置 sourceCompatibility和 targetCompatibility至 JavaVersion.VERSION_11在我的 IntelliJ/Grade/Java 项目中没有预期的效
我在gradle.properties中使用sourceCompatibility = 1.7,Gradle JVM(设置,Gradle,Intellij IDEA)是1.8.0_171并且 wrap
我们可以使用JDK 1.8编译器来编译sourceCompatibility选项设置为1.7的源代码吗? ModuleA 将此设置为 1.7,ModuleB 和 ModuleC 将此设置为 1.8。我
我想在控制台中看到 lint 错误,我想配置为只使用 java 7 而不是每个模块(我们有 12 个模块)。 我把它放到我的根 build.gradle 中: allprojects { ta
我正在尝试使用 gradle 为多模块 springBoot 应用程序设置一个新的存储库(用于构建脚本的 Kotlin DSL) 作为其中的一部分,我试图声明所有子项目所需的通用配置和依赖项。在这样做
按照 Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM targe
我正尝试按照本教程为 Android 编译 Clojure:https://github.com/clojure-android/lein-droid/wiki/Tutorial 但是,我正在打一个
如 developer.android 网站所述 "The Jack toolchain is deprecated, as per this announcement. If your projec
我是一名优秀的程序员,十分优秀!