[SPRING] ClassFile - ArchiveException을 빌드 할 수 없습니다.
SPRINGClassFile - ArchiveException을 빌드 할 수 없습니다.
Spring, jpa, tomcat, maven 등으로 응용 프로그램을 개발합니다.
로컬로 내 개발자 컴퓨터에서 모든 것이 잘 작동하지만 리눅스 서버에 응용 프로그램을 배포 할 때 다음 예외가 발생합니다.
org.hibernate.jpa.boot.archive.spi.ArchiveException: Could not build ClassFile
org.hibernate.jpa.boot.scan.spi.ClassFileArchiveEntryHandler.toClassFile(ClassFileArchiveEntryHandler.java:88)
org.hibernate.jpa.boot.scan.spi.ClassFileArchiveEntryHandler.handleEntry(ClassFileArchiveEntryHandler.java:65)
org.hibernate.jpa.boot.archive.internal.JarFileBasedArchiveDescriptor.visitArchive(JarFileBasedArchiveDescriptor.java:176)
org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:72)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.scan(EntityManagerFactoryBuilderImpl.java:723)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:219)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:186)
org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider$1.<init>(SpringHibernateJpaPersistenceProvider.java:49)
org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:49)
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:341)
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
org.domain.application.persistence.repository.DataSourceConfiguration.entityManagerFactory(DataSourceConfiguration.java:78)
org.domain.application.persistence.repository.DataSourceConfiguration$$EnhancerBySpringCGLIB$$52a56856.CGLIB$entityManagerFactory$0(<generated>)
org.domain.application.persistence.repository.DataSourceConfiguration$$EnhancerBySpringCGLIB$$52a56856$$FastClassBySpringCGLIB$$44eff5a3.invoke(<generated>)
org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312)
org.domain.application.persistence.repository.DataSourceConfiguration$$EnhancerBySpringCGLIB$$52a56856.entityManagerFactory(<generated>)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1113)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1008)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:636)
org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:446)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1113)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1008)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1471)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1216)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1081)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1006)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:904)
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:815)
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:743)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1133)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1036)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1081)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1006)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:904)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:323)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
이 메서드를 호출하면 데이터베이스 초기화 후 예외가 내 코드에 나타납니다.
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet()
문제를 찾을 수 없습니다. 도움을 주시면 감사하겠습니다! 감사
해결법
-
==============================
1.Java 버전과 javaassist 버전간에 충돌이있을 수 있습니다. 서버에서 java 8을 사용하는 경우 최신 javassist 버전도 사용해야합니다. 이 블로그는 구형 자바 스크립트를 끌어들이는 thymeleaf 내부에 충돌의 근원이 있음을 보여줍니다. 해결책은 의존성에서 그것을 제외시키는 것입니다.
Java 버전과 javaassist 버전간에 충돌이있을 수 있습니다. 서버에서 java 8을 사용하는 경우 최신 javassist 버전도 사용해야합니다. 이 블로그는 구형 자바 스크립트를 끌어들이는 thymeleaf 내부에 충돌의 근원이 있음을 보여줍니다. 해결책은 의존성에서 그것을 제외시키는 것입니다.
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>${thymeleaf.version}</version> <exclusions> <exclusion> <artifactId>javassist</artifactId> <groupId>org.javassist</groupId> </exclusion> </exclusions> </dependency>
귀하의 경우가 다를 수 있으므로 종속성 트리를 검사하여 적합한 솔루션을 찾아야합니다
-
==============================
2.Weblogic 12.1.3c에 Java 8 응용 프로그램을 배포하려고 시도했을 때도 동일한 문제가있었습니다. 내가 한 일은 weblogic.xml에 다음을 추가하는 것입니다.
Weblogic 12.1.3c에 Java 8 응용 프로그램을 배포하려고 시도했을 때도 동일한 문제가있었습니다. 내가 한 일은 weblogic.xml에 다음을 추가하는 것입니다.
<wls:prefer-application-packages> <wls:package-name>javassist</wls:package-name> </wls:prefer-application-packages>
-
==============================
3.나는 개발 기계에서 잘 작동하고 생산에 실패했다는 점에서 똑같은 문제가있었습니다.
나는 개발 기계에서 잘 작동하고 생산에 실패했다는 점에서 똑같은 문제가있었습니다.
이유는 war 파일을 로컬로 빌드 한 다음 압축을 풀면 볼 수 있습니다. 당신은 두 개의 javassist jar로 끝나는 것을 볼 수 있습니다 :
javassist-3.11.0.GA.jar javassist-3.18.1-GA.jar
동일한 lib 폴더에 함께 배포됩니다. 그래서 자바 애플리케이션이로드 될 때 javassist 라이브러리의 클래스가 필요하다면 classpath를 검색하고 아마도 첫 번째 (그리고 잘못된) jar를 만나로드 할 것입니다.
buld 도구 (maven 또는 내 경우에는 gradle)가 특정 리소스에 대해 복잡한 복잡한 클래스 패스를 구성하기 때문에 아마도 로컬에서는 발생하지 않을 것입니다.이 클래스는 호환 가능한 버전을 먼저 지정하기 때문에 클래스 패스 검색에서 찾을 가능성이 더 큽니다 .
(클래스 패스 검색이 어떻게 구현되었는지에 따라 달라지기 때문에 가능성이 높습니다. JVM이나 다른 것들에 의존 할 수 있다고 생각합니다.하지만 지금 당장은 그것을 찾지 않을 것입니다.하지만 그것을 추가 할 것입니다. 내 TODO 목록 및 다시 ... 또는 다른 사람이 대답을 알고 있다면이 게시물을 편집하십시오!)
어쨌든, 거기에있는 모든 사용자를 위해 나는 다음과 같은 문제를 해결했다.
configurations { all*.exclude group: 'javassist', module: 'javassist' // get rid of hibernate-incompatible javassist }
javassist-3.11 라이브러리 (그룹 : 'javassist')는 종속성의 종속성으로 종속되어 있으며 최대 절전 모드는 javassist-3.18 라이브러리 (그룹 : 'org.javassist')를 원했기 때문에 글로벌 제외를 사용해야했습니다. 대신.
모든 관계자, 특히 마스터 노예 덕분에.
-
==============================
4.master-slave 덕분에, javassist의 호환되지 않는 java 8 라이브러리와의 충돌이 있다고 설명하면서 문제를 발견했습니다.
master-slave 덕분에, javassist의 호환되지 않는 java 8 라이브러리와의 충돌이 있다고 설명하면서 문제를 발견했습니다.
필자의 경우, 그것은 타일의 의존성이었다 :
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.5</version> <exclusions> <exclusion> <artifactId>javassist</artifactId> <groupId>jboss</groupId> </exclusion> </exclusions> </dependency>
-
==============================
5.나는 thymeleaf 3.0.0.BETA01과 두 개의 다른 javassist 버전에 동일한 문제가있었습니다. Thymeleaf는 javaassist 3.11 (오류의 원인이 됨)을 가져옵니다.
나는 thymeleaf 3.0.0.BETA01과 두 개의 다른 javassist 버전에 동일한 문제가있었습니다. Thymeleaf는 javaassist 3.11 (오류의 원인이 됨)을 가져옵니다.
다음은 고정 된 항목입니다.
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.0.BETA01</version> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency>
-
==============================
6.나는 같은 예외가있다. 나는 java 8, hibernate, jpa, jetty를 사용한다.
나는 같은 예외가있다. 나는 java 8, hibernate, jpa, jetty를 사용한다.
나는 이것을 최신 버전으로 업데이트함으로써 해결했다.
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.3.3.Final' compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.3.3.Final' compile group: 'org.hibernate', name: 'hibernate-validator', version: '6.0.11.Final'
from https://stackoverflow.com/questions/27202939/could-not-build-classfile-archiveexception by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Boot에서 ErrorPageFilter를 비활성화하는 방법은 무엇입니까? (0) | 2019.01.04 |
---|---|
[SPRING] Spring Autowire로 JUnit 테스트를 작성하는 방법은 무엇입니까? (0) | 2019.01.04 |
[SPRING] 'transactionManager'라는 이름의 bean이 정의되지 않았습니다. (0) | 2019.01.04 |
[SPRING] 봄 보안 : intercept-url 패턴 access = "# id == 1 (0) | 2019.01.04 |
[SPRING] Java 8을 사용하는 Spring 3.2.x (0) | 2019.01.04 |