java - Maven 阴影插件 ClassNotFoundException

标签 java hibernate jpa maven-shade-plugin

我正在尝试使用 Maven 阴影插件。

我正在使用:Java 7、Spring 4.1.6.RELEASE、Hibernate 4.3.9Final、maven-shade 插件版本 2.3

我有以下错误。无法找出问题。

    BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [other/project/persistence/jpa/EntityManagerFactoryProvider.class]: Invocation of init method failed; nested exception is java.lang.TypeNotPresentException: Type java.time.LocalTime not present
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:523)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:512)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1052)
    at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:227)
    at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.getMetamodels(JpaMetamodelMappingContextFactoryBean.java:85)
    at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:56)
    at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:26)
Caused by: java.lang.TypeNotPresentException: Type java.time.LocalTime not present
    at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
    at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
    at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Unknown Source)
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
    at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
    at sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(Unknown Source)
    at java.lang.Class.getGenericInterfaces(Unknown Source)
    at org.hibernate.cfg.AttributeConverterDefinition.extractAttributeConverterParameterizedType(AttributeConverterDefinition.java:85)
    at org.hibernate.cfg.AttributeConverterDefinition.<init>(AttributeConverterDefinition.java:52)
    at org.hibernate.cfg.Configuration.addAttributeConverter(Configuration.java:2729)
    at org.hibernate.cfg.Configuration.addAttributeConverter(Configuration.java:2673)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildHibernateConfiguration(EntityManagerFactoryBuilderImpl.java:1153)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:853)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
]       
Caused by: java.lang.ClassNotFoundException: java.time.LocalTime
    at java.net.URLClassLoader$1.run(Unknown Source)
]

编辑: 找到了问题,但仍然不是解决方案:我正在使用 org.threeten.threetenbp 的 LocalDate,并且我已经设置了 jadira.usertype.autoRegisterUserTypes=true。正如我所说,从 IntelliJ 运行主类时工作正常,但在执行 jar 时却不行。

最佳答案

java.time.LocalTime 出现在 Java 8 中,因此您依赖的一些库可能正在使用 Java 8 类(根据您的堆栈跟踪,这是 Hibernate)

关于java - Maven 阴影插件 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292599/

相关文章:

java - 如何获取显示标签中对应行的id

android - “last_insert_id”不是可识别的函数名称

java - Hibernate一对一关系错误

java - 如何在 Spring Boot 中处理两个模型之间的多对多关系并围绕它们设计剩余调用?

java - jpa中where子句的使用方法

mysql - 一张表的SQL算术运算

java - 填充后列表为空,但微调器显示它有字符串

java - Keytool 给出非法选项错误 : -alias

lexical-analysis - 我应该在 OpenJDK javac 源中的哪里开始寻找获取 java 类元数据的位置?

mysql - hibernate 、JPA、MySQL : Unable to build EntityManagerFactory