最近使用hibernate-validator校验请求信息中不符合接口规范的参数
maven如下:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
<scope>compile</scope>
</dependency>
结果出现如下异常
Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/Persistence
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.hibernate.validator.internal.util.privilegedactions.LoadClass.loadNonValidatorClass(LoadClass.java:118)
at org.hibernate.validator.internal.util.privilegedactions.LoadClass.run(LoadClass.java:76)
at org.hibernate.validator.internal.util.privilegedactions.LoadClass.run(LoadClass.java:31)
at org.hibernate.validator.internal.engine.resolver.TraversableResolvers.run(TraversableResolvers.java:156)
at org.hibernate.validator.internal.engine.resolver.TraversableResolvers.getDefault(TraversableResolvers.java:57)
at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.getDefaultTraversableResolver(AbstractConfigurationImpl.java:579)
at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.applyXmlSettings(AbstractConfigurationImpl.java:696)
at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.parseValidationXml(AbstractConfigurationImpl.java:666)
at org.hibernate.validator.internal.engine.AbstractConfigurationImpl.buildValidatorFactory(AbstractConfigurationImpl.java:421)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:103)
经过查询网上资料,
不能有javaee-api的依赖
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
可是,全局搜索后,项目中并没有应用该包啊
于是,祭出我的搜索大法:mvn dependency:tree(该命令我真的用的很多)
对于maven项目中很多pom依赖,有些依赖包并不是直接依赖,而是间接依赖。用这个命令就可以找出他们的依赖关系。这个包就是,我们公司的一个框架包依赖了这个包,所以我要去除这个依赖。
<exclusions>
<exclusion>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</exclusion>
</exclusions>
完美解决