Не удалось собрать ClassFile - PullRequest
0 голосов
/ 29 марта 2020

я использую spring 5.2 и java 8. Я хочу использовать Convetrer с пружиной. но я постоянно получаю сообщение об ошибке, связанной с EntityManagerFactory:

29-Mar-2020 13: 55: 15.176 INFO [RMI TCP Connection (3) -127.0.0.1] org. apache .catalina. core.ApplicationContext.log Нет Spring Типы WebApplicationInitializer, обнаруженные в пути к классам 29-Mar-2020 13: 55: 15.533 INFO [Соединение RMI TCP (3) -127.0.0.1] org. apache .catalina.core.ApplicationContext.log Инициализация Spring root WebApplicationContext 29-Mar-2020 13: 55: 18.113 SEVERE [Соединение RMI TCP (3) -127.0.0.1] org. apache .catalina.core.StandardContext.listenerStart Исключение, отправляющее инициализированное событие контекста для экземпляра слушателя класса [org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: Ошибка при создании объекта с именем 'entityManagerFactory', определенным в ресурсе пути к классу [spring / spring-db.xml]: сбой вызова метода init; вложенное исключение: org.hibernate.boot.archive.spi.ArchiveException: не удалось создать ClassFile в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanf. .support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory * * тысяча двадцать-семь:. 595) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory java:. 517) при org.springframework.beans.factory.support.AbstractBeanFactory & lambda $ doGetBean $ 0 (AbstractBeanFactory java:. 323) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry java:. 222) в org.springframework.beans.factory.support.AbstractBeanFactory. doGetBean (AbstractBeanFactory. java: 321) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 202) в org.springframework.conte xt.support.AbstractApplicationContext.getBean (AbstractApplicationContext. java: 1108) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext. javaworktepp.ra.traf.raf.traf. 1035 *. : 292) at org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener. java: 103) в org. apache .catalina.core.StandardContext.listenerStart (StandardContext. java. 4699) apache .catalina.core.StandardContext.startInternal (StandardContext. java: 5165) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache. catalina.core.ContainerBase.addChildInternal (. ContainerBase java: 743) в орг. apache .catalina.core.ContainerBase.addChild (ContainerBase. java: 719) в орг. apache .catalina.core.StandardHost.addChild (StandardHost. java: 705) в орг. apache .catalina. .reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Method. java: 498) в org. apache .tomcat.util.molBan .invoke (BaseModelMBean. java: 287) в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor. java: 819) на com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer. java: 801) в орг. в орг. 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Method. java: 498) в org. apache .tomcat.util .modeler.BaseModelMBean.invoke (BaseModelMBean. java: 287) в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor. java: 819) в com.sun.jerxer . java: 801) в com.sun.jmx.remote.security.MBeanServerAccessController.invoke (MBeanServerAccessController. java: 468) в javax.management.remote.rmi.RMIConnectionImpl.doOperation (RMIConn ectionImpl. java: 1468) на javax.management.remote.rmi.RMIConnectionImpl.access $ 300 (RMIConnectionImpl. java: 76) на javax.management.remote.rmi.RMIConnectionImpl $ Privileged *peration.runI (RMIConne) : 1309) в java .security.AccessController.doPrivileged (собственный метод) в javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation (RMIConnectionImpl. java: 1408) в javax.management.remote.onmpImMr. (RMIConnectionImpl. java: 829) в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62). 1082 *: 43) в java .lang.reflect.Mehod.invoke (Метод. java: 498) в sun.rmi.server.UnicastServerRef.dispatch (UnicastServerRef. java: 346) в sun.rmi. transport.Transport $ 1.run (Transport. java: 200) в sun.rmi.transport.Transport $ 1.run (Transport. java: 197) в java .security.AccessController.doPrivilege d (Собственный метод) в sun.rmi.transport.Transport.serviceCall (Транспорт. java: 196) в sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport. java: 568) в sun.rmi. transport.tcp.TCPTransport $ ConnectionHandler.run0 (TCPTransport. java: 826) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 0 (TCPTransport. java: 683) в java .security .AccessController.doPrivileged (собственный метод) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport. java: 682) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor: 1142) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 617) в java .lang.Thread.run (Thread. java: 748) Причина: org.hibernate .boot.archive.spi.ArchiveException: Не удалось создать ClassFile в org.hibernate.boot.archive.scan.spi.ClassFileArchiveEntryHandler.toClassFile (ClassFileArchiveEntryHandler. java: 64) в org.hibernate.scan.i. .ClassFileArchiveEntryHandler.handleEntry (ClassF ileArchiveEntryHandler. java: 47) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 143) в org.hibernate.boot.archive.incript.ExcessoryDexcript.ExternalDirectory. *: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (Explodedorchive. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory (ExplodedArchiveDescriptor. java: 118) в org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.visitArchive *. 54) в org.hibernate.boot.archive.scan.spi.AbstractScannerImpl.scan (AbstractScannerImpl. java: 47) в org.hibernate.boot.model.process.internal.ScanningCoordinator.coordinateScan (ScanningCoordinator. java): 76) в org.hibernate.boot.model.process.spi.MetadataBuildingProcess.prepare (MetadataBuildingProcess. java: 98) в org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl. org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl. (EntityManagerFactoryBuilderImpl. java: 168) в org.hibernate.jpa.boot.spi. Bootstrap .getEntityManagerFactoryBuilder 11 или 11) 16 .hibernate.jpa.boot.spi. Bootstrap .getEntityManagerFactoryBuilder (Bootstrap. java: 89) в org.hibernate.jpa.HibernatePersistencePro (. HibernatePersistenceProvider java 166) vider.getEntityManagerFactoryBuilder на org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory (HibernatePersistenceProvider * * тысяча сто двадцать один:. 141) при org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean java.: 365) в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory (AbstractEntityManagerFactoryBean. java: 391) в org.springframework.orm.jpa. .jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet (LocalContainerEntityManagerFactoryBean. java: 341) в

моя модель:

@Entity
@Table(name="meals")
public class Meal {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;

    @Convert(converter = MealConverter.class)
    @Column(name = "date_time")
    LocalDateTime datetime;

    @Column(name = "description")
    private String description;

    @Column(name = "calories")
    private int calories;

    public Meal() {
    }

    public Meal(int id) {
        this.id = id;
    }


    public Meal(int id, LocalDateTime datetime, String description, int calories) {
        this.id = id;
        this.datetime = datetime;
        this.description = description;
        this.calories = calories;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public LocalDateTime getDatetime() {
        return datetime;
    }

    public void setDatetime(LocalDateTime datetime) {
        this.datetime = datetime;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getCalories() {
        return calories;
    }

    public void setCalories(int calories) {
        this.calories = calories;
    }

    public boolean isNew() {
        return this.id == null;
    }
}

мой преобразователь:

@Converter(autoApply = true)
public class MealConverter implements AttributeConverter<LocalDateTime, Timestamp> {
    private static final String SEPARATOR = ", ";

    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
        return Optional.ofNullable(localDateTime)
                .map(Timestamp::valueOf)
                .orElse(null);
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
        return Optional.ofNullable(timestamp)
                .map(Timestamp::toLocalDateTime)
                .orElse(null);
    }
}
1014 * ошибка из-за spring-db. xml:
<context:property-placeholder location="classpath:db/postgres.properties"/>

<bean id="myDataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${database.driverClassName}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="packagesToScan" value="ru.demo.exercise.models"/>
    <property name="dataSource" ref="myDataSource"/>

    <property name="jpaProperties">
        <props>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
        </props>
    </property>

    <property name="persistenceProvider">
        <bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
    </property>
</bean>

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<jpa:repositories base-package="ru.demo.exercise.repository.datajpa" entity-manager-factory-ref="entityManagerFactory"/>

<tx:annotation-driven/>

Также я использую javasist 3.12.1.GA.

Что не так в моем коде?

...