Java Maven shade插件类NotFoundException

Java Maven shade插件类NotFoundException,java,hibernate,jpa,maven-shade-plugin,Java,Hibernate,Jpa,Maven Shade Plugin,我正在尝试使用maven shade插件 我使用的是:Java7,Spring4.1.6.RELEASE,Hibernate4.3.9Final,maven shade插件版本2.3 我有以下错误。我想不出这个问题 BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [other/project/persistence/jpa/

我正在尝试使用maven shade插件

我使用的是:Java7,Spring4.1.6.RELEASE,Hibernate4.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)
]
BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[other/project/persistence/jpa/EntityManagerFactoryProvider.class]中定义:调用init方法失败;嵌套异常为java.lang.TypeNotPresentException:类型java.time.LocalTime不存在
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:523)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:512)
位于org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1052)
位于org.springframework.beans.factory.BeanFactoryUtils.beansoftypeIncludingOriends(BeanFactoryUtils.java:227)
位于org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.getMetamodels(JpaMetamodelMappingContextFactoryBean.java:85)
位于org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:56)
位于org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:26)
原因:java.lang.TypeNotPresentException:Type java.time.LocalTime不存在
位于sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(未知源)
位于sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(未知源)
位于sun.reflect.generics.tree.ClassTypeSignature.accept(未知源)
位于sun.reflect.generics.visitor.Reifier.reifyTypeArguments(未知源)
位于sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(未知源)
位于sun.reflect.generics.tree.ClassTypeSignature.accept(未知源)
位于sun.reflect.generics.repository.ClassRepository.GetSuperInterface(未知源)
位于java.lang.Class.GetGenericInterface(未知源)
在org.hibernate.cfg.AttributeConverterDefinition.ExtractAttributeConverterParameterZedType(AttributeConverterDefinition.java:85)上
位于org.hibernate.cfg.AttributeConverterDefinition。(AttributeConverterDefinition.java:52)
位于org.hibernate.cfg.Configuration.addAttributeConverter(Configuration.java:2729)
位于org.hibernate.cfg.Configuration.addAttributeConverter(Configuration.java:2673)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.buildHibernateConfiguration(EntityManagerFactoryBuilderImpl.java:1153)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:853)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
位于org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849)
位于org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManager工厂(HibernatePersistenceProvider.java:152)
位于org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
位于org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.AfterPropertieSet(AbstractEntityManagerFactoryBean.java:318)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
]       
原因:java.lang.ClassNotFoundException:java.time.LocalTime
位于java.net.URLClassLoader$1.run(未知源)
]
编辑
找到了问题,但仍然没有找到解决方案:我正在使用org.threeten.threetenbp中的LocalDate,并且我已经将jadira.usertype.autoRegisterUserTypes设置为true。正如我所说,从IntelliJ运行主类时工作正常,但在执行jar时工作正常。

出现在Java8中,因此您所依赖的一些库可能正在使用Java8的类(根据您的堆栈跟踪,这是Hibernate)

您正在依赖它,它是在Java8中引入的


由于您使用的是Java 7,因此会得到一个
ClassNotFoundException
。要么切换到Java 8,要么替换引入依赖项的库。

奇怪的是,在IntelliJ中运行主类时,我没有收到此错误,只有在执行着色jar时。Idea有时使用的不是实际的类路径,我认为,如果你将重新导入你的项目从零开始将能够复制这一点