错误
开始看Thinking in java 4th第20章注解(详见该书中文版P629-630),运行书中的代码,找不到com.sun.mirror.apt.* com.sun.mirror.declaration.* ,那么两个包下相关的类也都会找不到
分析
书中jdk版本是1.5,而我的jdk版本是1.8。com.sun.mirror这个包在java 7 就不建议使用,在java 8被废弃。
解决
知道了原因,就好解决了,下面提供两种解决方法:
第一种(建议):
com.sun.mirror 这个包被官方废弃,当然有相应替代的类出现,查看对应的代替类
把旧类替换为新类,就可以了
第二种
下载包含com.sun.mirror的tools.jar库文件apt-mirror-api-0.1.jar ,引入到工程中就可以了。
库文件包含的类
Files contained in apt-mirror-api-0.1.jar:
META-INF/MANIFEST.MF
META-INF/maven/com.moparisthebest.aptIn16/apt-mirror-api/pom.properties
META-INF/maven/com.moparisthebest.aptIn16/apt-mirror-api/pom.xml
com.sun.mirror.apt.AnnotationProcessor.class
com.sun.mirror.apt.AnnotationProcessorEnvironment.class
com.sun.mirror.apt.AnnotationProcessorFactory.class
com.sun.mirror.apt.AnnotationProcessorListener.class
com.sun.mirror.apt.AnnotationProcessors.class
com.sun.mirror.apt.Filer.class
com.sun.mirror.apt.Messager.class
com.sun.mirror.apt.RoundCompleteEvent.class
com.sun.mirror.apt.RoundCompleteListener.class
com.sun.mirror.apt.RoundState.class
com.sun.mirror.declaration.AnnotationMirror.class
com.sun.mirror.declaration.AnnotationTypeDeclaration.class
com.sun.mirror.declaration.AnnotationTypeElementDeclaration.class
com.sun.mirror.declaration.AnnotationValue.class
com.sun.mirror.declaration.ClassDeclaration.class
com.sun.mirror.declaration.ConstructorDeclaration.class
com.sun.mirror.declaration.Declaration.class
com.sun.mirror.declaration.EnumConstantDeclaration.class
com.sun.mirror.declaration.EnumDeclaration.class
com.sun.mirror.declaration.ExecutableDeclaration.class
com.sun.mirror.declaration.FieldDeclaration.class
com.sun.mirror.declaration.InterfaceDeclaration.class
com.sun.mirror.declaration.MemberDeclaration.class
com.sun.mirror.declaration.MethodDeclaration.class
com.sun.mirror.declaration.Modifier.class
com.sun.mirror.declaration.PackageDeclaration.class
com.sun.mirror.declaration.ParameterDeclaration.class
com.sun.mirror.declaration.TypeDeclaration.class
com.sun.mirror.declaration.TypeParameterDeclaration.class
com.sun.mirror.type.AnnotationType.class
com.sun.mirror.type.ArrayType.class
com.sun.mirror.type.ClassType.class
com.sun.mirror.type.DeclaredType.class
com.sun.mirror.type.EnumType.class
com.sun.mirror.type.InterfaceType.class
com.sun.mirror.type.MirroredTypeException.class
com.sun.mirror.type.MirroredTypesException.class
com.sun.mirror.type.PrimitiveType.class
com.sun.mirror.type.ReferenceType.class
com.sun.mirror.type.TypeMirror.class
com.sun.mirror.type.TypeVariable.class
com.sun.mirror.type.VoidType.class
com.sun.mirror.type.WildcardType.class
com.sun.mirror.util.DeclarationFilter.class
com.sun.mirror.util.DeclarationScanner.class
com.sun.mirror.util.DeclarationVisitor.class
com.sun.mirror.util.DeclarationVisitors.class
com.sun.mirror.util.Declarations.class
com.sun.mirror.util.SimpleDeclarationVisitor.class
com.sun.mirror.util.SimpleTypeVisitor.class
com.sun.mirror.util.SourceOrderDeclScanner.class
com.sun.mirror.util.SourcePosition.class
com.sun.mirror.util.TypeVisitor.class
com.sun.mirror.util.Types.class
参考:Java注解–关于AnnotationProcessor类
导入tools.jar包后还是找不到com.sun.mirror包 jdk1.8.0
无法解析导入 com.sun.mirror
com.sun.mirror的jar包
Getting Started with the Annotation Processing Tool, apt
关注我的公众号,轻松了解和学习更多技术