记录下问题解决:annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.SharedN

记录下解决 下面的问题

annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.SharedNameTable$NameImpl)

首先参考:

https://stackoverflow.com/questions/68344424/unrecognized-attribute-name-module-class-com-sun-tools-javac-util-sharednametab

这个帖子已经可以说是解决问题了.  但 为什么我的还是有问题?

---------

这个主要还是看个人环境, 比如我:

在android studio 的terminal里输入命令: java -version  就发现问题了, 因为我本机安装的是 jdk1.8的. 

android studio 的设置是 11没错, 但是使用 .\gradlew assembleRelease 命令的时候, 这个命令还是使用的全局java 配置 , 就是  java -version 所看到的jdk

解决:

按照帖子提供的下载地址去下载 18的jdk 安装并 设置  JAVA_HOME  

Java Downloads | Oracle

安装完毕后,记得要重启  android studio, 主要是要保证 android studio 能正确的读取到了  更新后的JAVA_HOME    可以 cmd 使用 set 命令查看

--------

之后还发生 了一个问题:

Unable to make field private final java.lang.String java.io.File.path accessible

这个问题 说是jdk版本又 高了..真是蛋疼.. 

最后又下载了 jdk11 :https://download.oracle.com/otn/java/jdk/11.0.16+11/b8c39bd7f0064c2aa24e6002b391bd0f/jdk-11.0.16_windows-x64_bin.exe?AuthParam=1660278915_92592b15b56aa58c379276c87044eef2

 

从 java -version 命令来看, 好像配置没生效, 但是问题解决了,  秉着严谨的思路, 但是没时间了,  先这样吧,  后面如果有朋友知道这里问题所在, 请留言告知 有需要的人, 谢谢! 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是一个Java编译器错误,错误信息为“java.lang.assertionerror: annotationtype(): unrecognized attribute name module (class com.sun.tools.javac.util.unsharednametable$nameimpl)”。 这个错误通常是由于编译器版本不兼容或编译器配置错误导致的。建议检查编译器版本和配置,确保它们与代码兼容。如果问题仍然存在,可以尝试使用其他编译器或更新编译器版本。 ### 回答2: 这个错误是由于Java编译器无法识别模块(module)这个属性名,而导致的一种错误类型。通常情况下,当我们使用Java编译器编译Java程序时,它会将程序代码编译成字节码(bytecode)并在执行之前先进行类型检查。当Java编译器发现程序中存在语法错误或代码逻辑错误时,就会抛出异常并终止程序的执行。 在该错误中,Java编译器认为程序代码中包含了无法识别的模块属性,进而抛出异常。这种错误通常与Java程序中使用的注解(Annotation)有关。注解是Java语言中的重要特性之一,用于为程序代码添加元数据(metadata)信息,以便在程序执行时进行某些操作或产生某些效果。 在该错误中,出现了一个注解类型里面的模块(module)属性,并且该属性的值无法被Java编译器识别。这种情况通常是由于程序中使用了未经充分测试或不完全符合Java语言规范的注解库所引起,导致注解库中存在一些无法识别的属性或值,从而引发Java编译器抛出该错误信息。 要避免这种错误,我们需要使用经过充分测试并符合Java语言规范的注解库,或者自行编写自己的注解库来满足程序需求。另外,在编写Java程序时,也要注意细节,遵循Java语言编程规范并进行充分测试,以确保程序的稳定和正确性。 ### 回答3: 在Java中,AssertionError是一种错误类型,通常表示一个断言失败了。断言是一种关键字,在编码的时候可以用来检查程序的状态是否满足预期条件,一旦这些条件不满足,程序就应该立即中止。而这个错误的提示中包含了“annotationtype(): unrecognized attribute name module”这样的信息,给我们的信息比较明显,是关于注解的错误。 在Java 9之后,增加了模块化系统。模块是一种组织代码的方式,它们可以依赖于其他模块,也可以被其他模块所依赖。因此,在模块化系统中,Java引入了一种新的方式来表示模块之间的依赖关系,即使用注解来表示这种依赖关系。这些注解包括了module、requires、exports、opens、provides和uses等等。 而在这个错误中,它提示了一个“unrecognized attribute name module”的信息,说明在使用注解的过程中出现了一个不被认可的module属性。然而,在这个错误信息中也给了我们具体的错误位置“class com.sun.tools.javac.util.unsharednametable$nameimpl”,这提醒我们可以从这个类的使用上找到错误。unsharednametable是一个实用程序类,它提供了一个名称表的实现。这个错误提示指出,它的nameimpl子类可能是我们出错的地方。 解决这个错误的方法,最直接的就是检查代码中使用注解的位置,确认是否在使用时忘记了一些重要的属性或者值,进一步排查可以更多的细节:1.检查代码中是否存在语法错误; 2.检查依赖是否正确加载; 3.检查是否使用正确的Java版本; 4.检查代码中是否有不符合规范的操作。 总之,在出现这个错误时,我们需要尽快找到错误的源头,并且有条有理地解决它,排除故障,保证程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值