IOException при использовании классов из другого модуля - PullRequest
0 голосов
/ 23 января 2020

Как использовать классы из одного модуля в другом? Существует два общих java -модуля и веб-приложение с java -классами, поэтому мне нужно использовать классы модуля веб-приложения из общего. Обычно я строю файл войны, и у меня есть pom. xml

       <build>
        <finalName>SBRiskDataSvcs</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.3</version>
                <configuration>
                    <attachClasses>true</attachClasses>
                    <classesClassifier>classes</classesClassifier>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
        </testResources>
    </build>

Модуль Webapp использует такие же общие зависимости, как этот

   <dependency>
        <groupId>ru.sberbank.rs.SBDataServices</groupId>
        <artifactId>SBRiskDataSvcs-common</artifactId>
        <version>${project.version}</version>
        <classifier>classes</classifier>
    </dependency>

Но при попытке запуска приложения появляется сообщение об ошибке

Caused by: java.io.IOException: invalid constant type: 18

полные журналы

[1/23/20 18: 19: 33: 605 MSK] 000000f c SystemOut O ПРЕДУПРЕЖДЕНИЕ: объяснение см. В http://www.slf4j.org/codes.html#release. [23.01.20 18: 19: 33: 617 MSK] 000000f c CompositionUn E WSVR0194E: Композиционный модуль WebSphere: cuname = MyApplication в BLA WebSphere: blaname = MyApplication не удалось запустить. [23.01.20 18: 19: 33: 631 MSK] 000000ba AdminHelper A ADMN1009I: Предпринята попытка запустить приложение MyApplication. [23.01.20 18: 19: 33: 643 MSK] 000000ba КомпозицияUn A WSVR0190I: Стартовый составной модуль WebSphere: cuname = MyApplication в BLA WebSphere: blaname = MyApplication. [23/23/20 18: 19: 39: 417 MSK] 000000ba ApplicationMg A WSVR0200I: Запускаемое приложение: MyApplication [1/23/20 18: 19: 39: 420 MSK] 000000ba ApplicationMg A WSVR0204I: Приложение: уровень сборки приложения MyApplication : Неизвестно [23.01.20, 18: 19: 39: 596 MSK] 000000ba SibMessage I [:] CWSID0017I: Перезагрузка конфигурации начинается для шины RSKbus. [1/23/20 18: 19: 39: 606 MSK] 000000ba SibMessage I [:] CWSID0018I: Перезагрузка конфигурации завершена для шины RSKbus. [1/23/20 18: 19: 39: 611 MSK] 000000ba SibMessage I [:] CWSID0019I: Начинается перезагрузка конфигурации для модуля обмена сообщениями Cluster1.000-RSKbus. [1/23/20 18: 19: 39: 615 MSK] 000000ba SibMessage
I [:] CWSID0020I: Перезагрузка конфигурации завершена для модуля обмена сообщениями Cluster1.000-RSKbus. [1/23/20 18: 19: 41: 368 MSK] 000000ba webapp I com.ibm.ws.webcontainer.webapp.WebGroupImpl WebGroup SRVE0169I: Загрузка веб-модуля: MyApplication-webapp-CURRENT.war. [1/23/20 18: 19: 41: 391 MSK] 000000ba WASSessionCor I SessionContextRegistry getSessionContext SESN0176I: создаст новый контекст сеанса для ключа приложения default_host / MyApplication [23.01.20 20: 19: 52: 694 MSK] 000000ba webapp I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Сообщение сервлета - [MyApplication # MyApplication-webapp-CURRENT.war]:. 1 Spring WebApplicationInitializer, обнаруженных в classpath [23.01.20 18:19:52: 699 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 52.698] INFO config.WebAppInitalizer WebApp запускается. [23.01.20 18: 19: 52: 826 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 52.826] INFO config.WebAppInitalizer WebApp запущен .. [23.01.20 18: 19: 52: 827 MSK] 000000ba webapp I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Сообщение сервлета - [ MyApplication # MyApplication-webapp-CURRENT.war] :. Инициализация Spring root WebApplicationContext [23/23/20 18: 19: 52: 828 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 52.828] ИНФОРМАЦИЯ pringframework .web.context.ContextLoader Root WebAppl icationContext: инициализация запущена [23.01.20 18: 19: 52: 869 MSK] 000000ba SystemOut
O [2020-01-23 18: 19: 52.869] INFO rt.AnnotationConfigWebApplicationContext Refreshing Root WebApplicationContext: дата запуска [ Чт 23 января 18:19:52 мск 2020]; root иерархии контекста [23.01.20 18: 19: 53: 020 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 53.020] INFO rt.AnnotationConfigWebApplicationContext Регистрация аннотированных классов: [class mypackage.web. WebConfig, класс mypackage.service.ServiceConfig, класс mypackage.persistence.PersistenceConfig] [1/23/20 18: 19: 53: 782 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 53.782] INFO ctory.support .DefaultListableBeanFactory Переопределение определения bean-компонента для bean-компонента requestMappingHandlerMapping с другим определением: замена [Root bean: class [null]; Объем =; абстрактные = false; lazyInit = FALSE; autowireMode = 3; dependencyCheck = 0; autowireCandidate = TRUE; первичные = false; factoryBeanName = org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration; factoryMethodName = requestMappingHandlerMapping; initMethodName = NULL; destroyMethodName = (вывод); определяется в org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration] с помощью [Root bean: class [null]; Объем =; абстрактные = false; lazyInit = FALSE; autowireMode = 3; dependencyCheck = 0; autowireCandidate = TRUE; первичные = false; factoryBeanName = WebConfig; factoryMethodName = requestMappingHandlerMapping; initMethodName = NULL; destroyMethodName = (вывод); определено в mypackage.web.WebConfig] [1/23/20 18: 19: 54: 496 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 54.496] INFO ion.AutowiredAnnotationBeanPostProcessor JSR-330 'javax.inject. Inject 'аннотация найдена и поддерживается для автоматического подключения [23.01.20 18: 19: 55: 025 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.025] INFO eConfig $$ EnhancerBySpringCGLIB $$ a25b9480 Настроенный Entity Manager. . [1/23/20 18: 19: 55: 101 MSK] 000000ba SystemOut
O [2020-01-23 18: 19: 55.101] INFO a.LocalContainerEntityManagerFactoryBean Построение контейнера JPA EntityManagerFactory для единицы сохраняемости 'default' [1 / 23/20 18: 19: 55: 387 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.387] INFO org.hibernate.annotations.common.Version HCANN000001: Hibernate Commons Annotations {4.0.1.Final} [1/23/20 18: 19: 55: 403 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.403] INFO org.hibernate.Version HHH000412: Hibernate Core {4.0.1.Final} [1 / 23/20 18: 19: 55: 409 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.409] INFO org.hibernate.cfg.Envi ronment HHH000206: свойства hibernate.properties не найдены [1/23/20 18: 19: 55: 413 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.413] INFO org.hibernate.cfg.Environment HHH000021: поставщик байт-кода имя: javassist [23.01.20 18: 19: 55: 478 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.478] INFO org.hibernate.ejb.Ejb3Configuration
HHH000204: Обработка PersistenceUnitInfo [имя : по умолчанию ...] [23.01.20 18: 19: 55: 535 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.535] WARN rt.AnnotationConfigWebApplicationContext Исключительная ситуация, возникшая во время инициализации контекста - отмена refre sh попытка: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем entityManagerFactory, определенным в mypackage.persistence.PersistenceConfig: сбой вызова метода init; вложенное исключение: java .lang.RuntimeException: ошибка при попытке сканирования: file: /opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF /lib/MyApplication-common-8.0.5-classes.jar [1/23/20 18: 19: 55: 546 MSK] 000000ba SystemOut O [2020-01-23 18: 19: 55.540] ОШИБКА pringframework.web.context .ContextLoader Инициализация контекста завершилась неудачей org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем entityManagerFactory, определенным в mypackage.persistence.PersistenceConfig: сбой вызова метода init; вложенное исключение: java .lang.RuntimeException: ошибка при попытке сканирования: файл: /opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF /lib/MyApplication-common-8.0.5-classes.jar

        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) Caused by: java.lang.RuntimeException: error trying to scan <jar-file>: file:/opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF/lib/MyApplication-common-8.0.5-classes.jar
        at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:854)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:596)
        at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:50)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
        ... 70 more Caused by: java.lang.RuntimeException: Error while reading file:/opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF/lib/MyApplication-common-8.0.5-classes.jar
        at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:193)
        at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:503)
        at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:851)
        ... 78 more Caused by: java.io.IOException: invalid constant type: 18
        at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
        at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
        at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
        at javassist.bytecode.ClassFile.read(ClassFile.java:737)
        at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
        at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:245)
        at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:190)
        ... 80 more [1/23/20 18:19:55:547 MSK] 000000ba webapp        E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
                                 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in mypackage.persistence.PersistenceConfig: Invocation of init method failed; nested exception is java.lang.RuntimeException: error trying to scan <jar-file>: file:/opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF/lib/MyApplication-common-8.0.5-classes.jar
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) Caused by: java.lang.RuntimeException: error trying to scan <jar-file>: file:/opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF/lib/MyApplication-common-8.0.5-classes.jar
        at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:854)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:596)
        at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:50)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:382)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
        ... 70 more Caused by: java.lang.RuntimeException: Error while reading file:/opt/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/MyApplication.ear/MyApplication-webapp-CURRENT.war/WEB-INF/lib/MyApplication-common-8.0.5-classes.jar
        at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:193)
        at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:503)
        at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:851)
        ... 78 more Caused by: java.io.IOException: invalid constant type: 18
        at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
        at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
        at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
        at javassist.bytecode.ClassFile.read(ClassFile.java:737)
        at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
        at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:245)
        at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:211)
        at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:172)
        at org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements(FileZippedJarVisitor.java:123)
        at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:148)
        at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:190)
        ... 80 more

[1/23/20 18:19:55:554 MSK] 000000ba webapp        I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet Message - [MyApplication#MyApplication-webapp-CURRENT.war]:.Closing Spring root WebApplicationContext

PersistenceConfig.class

@Configuration
@EnableTransactionManagement
@EnableJpaAuditing
@EnableJpaRepositories(basePackages = {"mypackage.persistence"})
@ComponentScan(basePackages = {"mypackage.persistence", "persistence"})
public class PersistenceConfig {
    private static final String[] PACKAGE_WITH_JPA_ENTITIES = {
            "mypackage.persistence",
            "persistence"
    };

    private final Logger log = Logger.getLogger(getClass());

    @Bean
    @Resource(type = DataSource.class, lookup = "jdbc/DATA", name = "jdbc/DATA")
    public DataSource dataSource() {
        final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(true);
        DataSource dataSource = dsLookup.getDataSource("java:comp/env/jdbc/DATA");
        return dataSource;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
        entityManager.setDataSource(dataSource());
        entityManager.setPackagesToScan(PACKAGE_WITH_JPA_ENTITIES);
        entityManager.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
        entityManager.setJpaProperties(getHibernateProperties());
        log.info("Entity Manager configured..");
        return entityManager;
    }

    @Bean
    public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(entityManagerFactory);
        return transactionManager;
    }

    private Properties getHibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
        properties.put("hibernate.show_sql", "true");
        properties.put("hibernate.hbm2ddl.auto", "none");
        properties.put("org.hibernate.envers.do_not_audit_optimistic_locking_field", false);

        properties.put("verifyServerCertificate", false);
        properties.put("useSSL", false);
        properties.put("requireSSL", false);
        properties.put("useLegacyDatetimeCode", false);
        properties.put("useUnicode", "yes");
        properties.put("characterEncoding", "UTF-8");
        properties.put("serverTimezone", "UTC");
        properties.put("useJDBCCompliantTimezoneShift", true);
        return properties;
    }
}

этот класс находится в модуле веб-приложения.

...