首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法访问“java.lang.Object”,这是一个超级类型的.检查模块类路径中缺少或冲突的依赖项。

无法访问“java.lang.Object”,这是一个超级类型的.检查模块类路径中缺少或冲突的依赖项。
EN

Stack Overflow用户
提问于 2022-03-28 14:48:46
回答 2查看 2.2K关注 0票数 3

我认为通过实现我自己的自定义linter来了解更多关于静态代码分析的知识将是有趣的和信息丰富的。我一直试图声明以下依赖项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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是上面代码片段中描述的版本,MavenCentral的最新版本是25.3.0版本。如果我将版本号交换给这些在MavenCentral上描述,则依赖项可以由Gradle解决,但我的自定义linter代码完全用红色高亮显示,并出现错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cannot access 'java.lang.Object' which is a supertype of my_custom_linter. Check your module classpath for missing or conflicting dependencies

关于这个错误有很多这样的帖子,少数已经解决的问题已经通过使用可用依赖关系的最新版本来解决,在我的例子中,这个版本回到了本文中描述的第一个错误。

项目级build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
}

衣领模块build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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")
    }
}

App模块build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "Custom Linter"
include ':app'
include ':lint-checks'

InputTypeDetector.kt (自定义林特类):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 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文件。Gradle在请求25.3.0版本时已经解决并下载了这些依赖项。为什么我在访问java.lang.Object和检查类路径时出错?

我一直在跟踪这个教程

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-06 12:20:20

我不清楚,您配置了哪些依赖关系解析存储库,因为您没有提供settings.gradle文件。因此,我假设您已经在这里配置了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}

现在,虽然存在lint-apilint-checks的25.3.0版本,但它有依赖声明,这使得它不适合用作编译时依赖项。所以我把版本升级到26.6.4:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    compileOnly "com.android.tools.lint:lint-api:26.6.4"
    compileOnly "com.android.tools.lint:lint-checks:26.6.4"

这就带来了所有所需的依赖关系。但是InputTypeDetector实现仍然存在一个问题:visitElement方法签名是错误的,因为它使用CoroutineContext.Element作为element的类型。不过,应该是org.w3c.dom.Element

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    override fun visitElement(context: XmlContext, element: org.w3c.dom.Element) {
        // …
    }

通过这些更改,我可以成功地构建您的lint-checks项目(用Gradle 7.4.2进行测试)。

回复您的评论:恐怕,我不能在你的代码中重现错误。但是,请注意,我做了一些可能会产生影响的修改:

  • 我不得不在LintRegistry.ktimport com.android.tools.lint.detector.api.CURRENT_API中添加一个缺失的导入。
  • 在将您的项目导入Android之前,我已经删除了.idea/
  • 出于安全考虑,我删除了gradle/gradlewgradlew.bat文件。然后我添加了一个相同版本(7.4.2)的新的Gradle包装器。

你能不能试着做同样的事情,重新导入这个项目,看看它是否能修复它?另一件值得尝试排除与Android有关的问题的事情是:看看从命令行构建是否有效,例如使用./gradlew lint-checks:build

票数 0
EN

Stack Overflow用户

发布于 2022-05-06 08:44:05

我看到的都是同样的东西。这种事一直发生在我身上。

迟早,我会回到一个旧的代码库,并且它会再次工作一段时间。

但我知道,总有一天,我的build.gradle.kts会变成血红的,而ideaj开始失去物体和可比的东西.但不知怎么的,奇迹般地成功了.没有java.lang.Object ..。它一直在工作直到它不起作用。

然后我又开始跳舞了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71654531

复制
相关文章
fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖
learn from https://fastapi.tiangolo.com/zh/tutorial/dependencies/
Michael阿明
2022/01/07
2.9K0
fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖
maven 中的版本依赖冲突问题
在使用maven构建依赖的时候,发现springBoot的版本和导入的依赖版本中的 spring-context 的版本出现冲突。
猎户星座1
2020/08/07
3.1K0
【Android Gradle 插件】Android 依赖管理 ⑤ ( Gradle 依赖优化 | 命令行查看依赖模块 | 依赖冲突问题 | 依赖传递冲突 | 分库冲突 | 依赖分组不同导致冲突 )
① 依赖库版本选择 : 在 build.gradle 构建脚本中 , 如果设置了多个版本的依赖库 , Gradle 构建时会默认选择最高版本的依赖库 ;
韩曙亮
2023/03/30
2.9K0
在 WPF 中获取一个依赖对象的所有依赖项属性
本来 .NET 中提供了一些专供设计器使用的类型 TypeDescriptor 可以帮助设计器找到一个类型或者组件的所有可以设置的属性,不过我们也可以通过此方法来获取所有可供使用的属性。
walterlv
2023/10/22
4120
maven 解包依赖项中的文件
使用goal:unpack-dependencies 在配置参数includeArtifactIds中指定要解包的模块制件ID
路过君
2022/07/20
2.4K0
SD模块中的ATP检查
1、ATP—AvailableToPromise,代表预计可用量,用来检查物料的可用数量。=仓库库存+预计收到的数量(引入的库存)—计划发货(支出的库存)。ATP着重考虑仓库的移入和移出。通过后台配置,可以允许ATP检查:安全库存、运送中的库存、质检库存、冻结库存等等,还可以检查与ATP相关的计划库存接收或发放,如采购订单、采购申请、生产订单、销售订单等。
用户5495712
2019/07/16
6.5K0
SD模块中的ATP检查
web未能加载文件或程序集“XXX”或它的某一个依赖项
如果你将应用程序生成x86而不是Any CPU时,在64位操作系统中不会出错错误,而在32位操作系统中可能会出现以下错误
前端皮皮
2020/11/26
1.5K0
web未能加载文件或程序集“XXX”或它的某一个依赖项
web未能加载文件或程序集“XXX”或它的某一个依赖项
如果你将应用程序生成x86而不是Any CPU时,在64位操作系统中不会出错错误,而在32位操作系统中可能会出现以下错误
Python进阶者
2021/08/25
2.1K0
PHP检查对象或类中是否存在属性
$obj = \app\common\library\Email::instance(); $obj->p=889; if(isset($obj->p)){ echo 66; }else{ echo 99; } die; isset既可以判断对象的属性是否存在,也可以判断数组的键名是否存在 未经允许不得转载:肥猫博客 » PHP检查对象或类中是否存在属性
超级小可爱
2023/02/20
4.2K0
maven多模块和依赖冲突问题汇总记录
maven多模块和依赖冲突问题汇总记录目录前言:idea怎么创建maven多module的项目首先了解上面是多module?多Module管理项目的几种方式:创建一个多module项目(idea2019.3.3版本)创建一个父pom项目:创建子模块,引入到父pom里面子父模块的区别:父pom.xml文件内容:子pom.xml文件内容:子模块之间进行互相的依赖将上面的项目改造为spring-boot多模块项目:改造父pom文件:Spring boot maven plugin问题MAVEN依赖冲突问题:依赖的传递原则:maven的依赖引入策略最短路径原则:最先声明原则:如何解决依赖冲突的问题锁定版本法什么情况下会出现Jar包冲突问题如何查找和发现jar包冲突?1. 利用idea的maven视图工具2. Idea Maven Helper 插件3. maven命令工具:如何写一个干净依赖关系的POM文件dependency:analyze-only 命令mvn dependency:analyze-duplicate 命令
阿东
2021/08/16
4.2K0
maven多模块和依赖冲突问题汇总记录
「安全工具」13个工具,用于检查开源依赖项的安全风险
您是否知道高达90%的应用程序通常包含第三方组件,主要是开源软件?您是否知道全球500强中超过50%使用易受攻击的开源组件?
架构师研究会
2019/07/22
3.3K0
在类路径或引导类路径中找不到程序包 java.lang
正确配置如下:Windows(分隔符英文分号):XML/HTML code bootclasspath ${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</ bootclasspath linux(分隔符英文冒号):XML/HTML code bootclasspath ${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</ bootclasspath
Raindew
2018/06/14
3.9K0
cdn缺少cname解析导致的网站无法访问
这才想起来可能是没有添加www的CNAME记录,于是登录后台重新添加了带www前缀的CNAME域名,然後一切问题就都解决了。
obaby
2023/03/27
3.1K0
cdn缺少cname解析导致的网站无法访问
JavaScript中的类型检查有点麻烦
JS 的动态类型有好有坏。好的一面,不必指明变量的类型。不好的是,咱们永远无法确定变量的类型。
前端小智@大迁世界
2022/06/15
1.4K0
JavaScript中的类型检查有点麻烦
Maven依赖冲突的解决方式
对Maven概念还不了解的可以看看我的这篇文章: https://blog.csdn.net/pjh88/article/details/108520721
一只胡说八道的猴子
2020/11/11
7200
Maven依赖冲突的解决方式
Maven依赖冲突的解决方式
对Maven概念还不了解的可以看看我的这篇文章: https://blog.csdn.net/pjh88/article/details/108520721
一只胡说八道的猴子
2020/11/13
9880
Maven依赖冲突的解决方式
python 元类做类型检查
class NoMixedCaseMeta(type): def new(cls, clsname, bases, clsdict): for name in clsdict: if name.lower() != name: raise TypeError('Bad attribute name: ' + name) return super().new(cls, clsname, bases, clsdict)
用户5760343
2019/12/12
6160
Visual Studio2010中的外部依赖项
Visual Studio2010中的项目下拉列表下面有外部依赖项,里面显示的文件是你程序中显示包含的头文件所包含的的头文件。比如,main函数里面包含了windows.h头文件,而windows.h头文件又包含其他头文件,而这些头文件又可能还包含另外的头文件,所有这些都显示在外部依赖项里面。于是有的时候外部依赖性就变得很庞大。 若想减少外部依赖项,那就尽量避免包含不必要的头文件。 不过根据编译器的行为,可能编译时应该会过滤掉那些虽然包含进来,但完全没有用到的头文件。完全可以不必理会外部依赖项。
AIHGF
2019/02/18
2.7K0
【Android Gradle 插件】Gradle 依赖管理 ⑥ ( dependencies 依赖查找路径 | dependencies 依赖冲突 | dependencies 依赖库层级分析 )
在我的电脑的 SDK\extras\android\m2repository\com\android\support 路径中 , 就是依赖中常用的支持库 :
韩曙亮
2023/03/30
1.7K0
【Android Gradle 插件】Gradle 依赖管理 ⑥ ( dependencies 依赖查找路径 | dependencies 依赖冲突 | dependencies 依赖库层级分析 )
maven缺少依赖包,强制更新依赖命令
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
一个会写诗的程序员
2020/04/30
7.4K0

相似问题

Error:检查模块类路径中缺少或冲突的依赖项

80

无法访问类“视图模型”。检查模块类路径中缺少或冲突的依赖项。

61

无法访问'java.io.Serializable‘,它是'kotlin.String’的超级类型。检查模块类路径中缺少或冲突的依赖项。

33

Avro生成的类:无法访问类“Builder”。检查模块类路径中缺少或冲突的依赖项。

22

无法访问类'com.google.common.util.concurrent.ListenableFuture'.检查模块类路径中缺少或冲突的依赖项。

166
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文