maven с log4j и querydsl NoClassDefFoundError

У меня есть многомодульный проект maven, в котором в модуле домена (сущности) проекта я настроил процессоры querydsl apt для jpa. также в проекте есть модуль презентации, который зависит от модуля предметной области. когда я запускаю модуль презентации, возникает эта ошибка.

версия запроса: 3.5.0

java.lang.NoClassDefFoundError: Could not initialize class com.dpj.veterans.data.model.domain.QVeteranType
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.logging.log4j.core.util.Loader.initializeClass(Loader.java:285)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.loadClass(ThrowableProxy.java:500)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.toExtendedStackTrace(ThrowableProxy.java:621)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:170)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:171)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:171)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:148)
    at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:274)
    at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:64)
    at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:36)
    at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:189)
    at org.apache.logging.log4j.core.layout.PatternLayout.toSerializable(PatternLayout.java:53)
    at org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(AbstractStringLayout.java:52)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:104)
    at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:96)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97)
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:428)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:407)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:365)
    at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:103)
    at org.apache.logging.slf4j.Log4jLogger.log(Log4jLogger.java:374)
    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:331)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Как решить эту проблему?


person Alireza Hanifi    schedule 30.11.2014    source источник


Ответы (1)


Вы добавили выходной каталог Querydsl в качестве исходного каталога?

Ваша конфигурация Maven должна выглядеть так:

<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
        <execution>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                <logOnlyOnError>true</logOnlyOnError>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <!-- add Querydsl meta-model for JPA as source -->
                    <source>target/generated-sources/java</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>
person Simon    schedule 09.01.2015