gpt4 book ai didi

android - 无法访问 'java.lang.Object' 这是...的父类(super class)型检查您的模块类路径是否存在缺失或冲突的依赖项

转载 作者:行者123 更新时间:2023-12-05 00:00:30 30 4
gpt4 key购买 nike

我认为通过实现我自己的自定义 linter 来了解有关静态代码分析的更多信息会很有趣且内容丰富。我一直在尝试声明以下依赖项:

dependencies {
compileOnly "com.android.tools.lint:lint-api:30.1.2"
compileOnly "com.android.tools.lint:lint-checks:30.1.2"
}
但是 Gradle 给出了一个错误,即无法解决这些依赖关系。在挖掘了一些之后,我发现 MavenCentral 和 Google 对这些库的版本控制似乎不同,Google 是上面代码 fragment 中描述的版本,而 MavenCentral 的最新版本是 25.3.0。如果我换掉那些 described on MavenCentral 的版本号,依赖项可以由 Gradle 解决,但我的自定义 linter 代码完全以红色突出显示并给出错误
Cannot access 'java.lang.Object' which is a supertype of my_custom_linter. Check your module classpath for missing or conflicting dependencies
有很多关于此错误的 SO 帖子,并且已解决的少数帖子是通过使用可用依赖项的最新版本解决的,在我的情况下,这会回到本文中描述的第一个错误。

项目级别 build.gradle :
buildscript {
repositories {
google()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.4"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
}
}

plugins {
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
id 'org.jetbrains.kotlin.jvm' version '1.6.10' apply false
}

task clean(type: Delete) {
delete rootProject.buildDir
}
Lint 模块 build.gradle :
plugins {
id 'java-library'
id 'org.jetbrains.kotlin.jvm'
}

java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}

dependencies {
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"
compileOnly "com.android.tools.lint:lint-api:25.3.0"
compileOnly "com.android.tools.lint:lint-checks:25.3.0"
}

jar {
manifest {
attributes("Lint-Registry": "com.example.lint_checks.LintRegistry")
}
}
应用模块 build.gradle :
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}

android {
compileSdk 32

defaultConfig {
...
}

buildTypes {
...
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
kotlinOptions {
jvmTarget = '1.7'
}
buildFeatures {
viewBinding true
}
}

dependencies {
lintChecks project(path: ":lint-checks")
...
}
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Custom Linter"
include ':app'
include ':lint-checks'
InputTypeDetector.kt (自定义 lint 类):
/* Entire class highlighted by IDE with error message: 
Cannot access 'java.lang.Object' which is a supertype of 'com.example.lint_checks.InputTypeDetector'. Check your module classpath for missing or conflicting dependencies */

class InputTypeDetector: LayoutDetector() {
companion object {
@JvmStatic
internal val ISSUE_MISSING_INPUT_TYPE = Issue.create(
id = "MissingInputType",
briefDescription = "Specify inputType attribute to get proper keyboard shown by system.",
explanation = "You should specify an inputType for each EditText so that you can get the proper keyboard to be shown by system.",
category = Category.USABILITY,
priority = 8,
severity = Severity.ERROR,
implementation = Implementation(
InputTypeDetector::class.java,
Scope.ALL_RESOURCES_SCOPE
)
).addMoreInfo("https://developer.android.com/training/keyboard-input/style")
}

override fun getApplicableElements(): Collection<String>? {
return listOf(
SdkConstants.EDIT_TEXT,
"androidx.appcompat.widget.AppCompatEditText",
"android.support.v7.widget.AppCompatEditText"
)
}

override fun visitElement(context: XmlContext, element: CoroutineContext.Element) {
if (!element.hasAttribute(SdkConstants.ATTR_INPUT_TYPE)) { // Check if the element has the `android:inputType` attribute
context.report(
issue = ISSUE_MISSING_INPUT_TYPE, // The issue that we defined above
location = context.getLocation(element),
message = ISSUE_MISSING_INPUT_TYPE.getExplanation(TextFormat.TEXT)
)
}
}
}
更新:
我已经验证了 lint-apilint-checks jar 文件位于我项目的外部库目录中。在请求版本 25.3.0 时,Gradle 已解决并下载了这些依赖项。为什么我收到有关访问 java.lang.Object 的错误并检查我的类路径?
我一直在关注这个 tutorial

最佳答案

我看到了同样的狗屎。这一直发生在我身上。
迟早,我最终会回到旧代码库,它会再次工作一段时间。
但我知道有一天我的 build.gradle.kts 会变成血红色,ideaj 开始丢失 Object 和 Comparable 之类的东西……但是,不知何故,它仍然奇迹般地工作……没有 java.lang.Object ......它会继续工作,直到它没有。
然后我又开始跳舞。

关于android - 无法访问 'java.lang.Object' 这是...的父类(super class)型检查您的模块类路径是否存在缺失或冲突的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71654531/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com