ClassNotFoundException javax.mail.internet.AddressException при запуске hibernate3:hbm2ddl

Итак, у меня проблемы с log4j и hbm2ddl. Когда я помещаю SMTPAppender в свой log4j.xml, я получаю это ClaasNotFoundException.

Любые подсказки о том, как решить эту проблему?

Это мои файлы конфигурации и трассировка стека:

трассировка стека:

        [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Unnamed - Mail-logging-and-hbm2ddl:Mail-logging-and-hbm2ddl:jar:1.0
    [INFO]    task-segment: [package]
    [INFO] ------------------------------------------------------------------------
    [INFO] [resources:resources {execution: default-resources}]
    [WARNING] Using platform encoding (windows-1252 actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] Copying 3 resources
    [INFO] Copying 2 resources
    [INFO] [compiler:compile {execution: default-compile}]
    [INFO] Nothing to compile - all classes are up to date
    [INFO] Preparing hibernate3:hbm2ddl
    [WARNING] Removing: hbm2ddl from forked lifecycle, to prevent recursive invocation.
    [INFO] [resources:resources {execution: default-resources}]
    [WARNING] Using platform encoding (windows-1252 actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] Copying 3 resources
    [INFO] Copying 2 resources
    [INFO] [hibernate3:hbm2ddl {execution: default}]
    [INFO] Configuration XML file loaded: file:/D:/DEV/PROJECTS/Mail%20logging%20and%20hbm2ddl/src/main/resources/hibernate.cfg.xml
    [FATAL ERROR] org.codehaus.mojo.hibernate3.exporter.Hbm2DDLExporterMojo#execute() caused a linkage error (java.lang.NoClassDefFoundError) and may be out-of-date. Check the realms:
    [FATAL ERROR] Plugin realm = app0.child-container[org.codehaus.mojo:hibernate3-maven-plugin:2.2]
    urls[0] = file:/d:/Settings/U190552/.m2/repository/org/codehaus/mojo/hibernate3-maven-plugin/2.2/hibernate3-maven-plugin-2.2.jar
    urls[1] = file:/d:/Settings/U190552/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar
    urls[2] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar
    urls[3] = file:/d:/Settings/U190552/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
    urls[4] = file:/d:/Settings/U190552/.m2/repository/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar
    urls[5] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar
    urls[6] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar
    urls[7] = file:/d:/Settings/U190552/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar
    urls[8] = file:/d:/Settings/U190552/.m2/repository/commons-collections/commons-collections/3.1/commons-collections-3.1.jar
    urls[9] = file:/d:/Settings/U190552/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
    urls[10] = file:/d:/Settings/U190552/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
    urls[11] = file:/d:/Settings/U190552/.m2/repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.jar
    urls[12] = file:/d:/Settings/U190552/.m2/repository/org/codehaus/mojo/hibernate3/maven-hibernate3-api/2.2/maven-hibernate3-api-2.2.jar
    urls[13] = file:/d:/Settings/U190552/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
    urls[14] = file:/d:/Settings/U190552/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.1.1/geronimo-jta_1.0.1B_spec-1.1.1.jar
    urls[15] = file:/d:/Settings/U190552/.m2/repository/org/slf4j/slf4j-log4j12/1.5.6/slf4j-log4j12-1.5.6.jar
    urls[16] = file:/d:/Settings/U190552/.m2/repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar
    urls[17] = file:/d:/Settings/U190552/.m2/repository/org/codehaus/mojo/hibernate3/maven-hibernate3-jdk14/2.2/maven-hibernate3-jdk14-2.2.jar
    urls[18] = file:/d:/Settings/U190552/.m2/repository/org/codehaus/mojo/hibernate3/maven-hibernate3-jdk15/2.2/maven-hibernate3-jdk15-2.2.jar
    urls[19] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar
    urls[20] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar
    urls[21] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar
    urls[22] = file:/d:/Settings/U190552/.m2/repository/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar
    urls[23] = file:/d:/Settings/U190552/.m2/repository/javax/transaction/jta/1.1/jta-1.1.jar
    urls[24] = file:/d:/Settings/U190552/.m2/repository/javassist/javassist/3.4.GA/javassist-3.4.GA.jar
    urls[25] = file:/d:/Settings/U190552/.m2/repository/jboss/jboss-common/4.0.2/jboss-common-4.0.2.jar
    urls[26] = file:/d:/Settings/U190552/.m2/repository/slide/webdavlib/2.0/webdavlib-2.0.jar
    urls[27] = file:/d:/Settings/U190552/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
    [FATAL ERROR] Container realm = plexus.core
    urls[0] = file:/D:/DEV/TOOLS/apache-maven-2.2.1/lib/maven-2.2.1-uber.jar
    [INFO] ------------------------------------------------------------------------
    [ERROR] FATAL ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] javax/mail/internet/AddressException
    javax.mail.internet.AddressException
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    java.lang.NoClassDefFoundError: javax/mail/internet/AddressException
     at java.lang.Class.getDeclaredConstructors0(Native Method)
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
     at java.lang.Class.getConstructor0(Class.java:2699)
     at java.lang.Class.newInstance0(Class.java:326)
     at java.lang.Class.newInstance(Class.java:308)
     at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:174)
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:150)
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:163)
     at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:425)
     at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:394)
     at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:829)
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:712)
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:618)
     at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470)
     at org.apache.log4j.LogManager.<clinit>(LogManager.java:122)
     at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:221)
     at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
     at org.codehaus.mojo.hibernate3.configuration.AnnotationComponentConfiguration.createConfiguration(AnnotationComponentConfiguration.java:93)
     at org.codehaus.mojo.hibernate3.configuration.AbstractComponentConfiguration.getConfiguration(AbstractComponentConfiguration.java:51)
     at org.codehaus.mojo.hibernate3.exporter.Hbm2DDLExporterMojo.doExecute(Hbm2DDLExporterMojo.java:87)
     at org.codehaus.mojo.hibernate3.HibernateExporterMojo.execute(HibernateExporterMojo.java:152)
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
     at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
     at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
     at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
    Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
     at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
     at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
     at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
     ... 47 more
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2 seconds
    [INFO] Finished at: Fri Dec 31 11:42:20 CET 2010
    [INFO] Final Memory: 10M/24M
    [INFO] ------------------------------------------------------------------------

log4j.xml

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

        <appender name="email" class="org.apache.log4j.net.SMTPAppender">
            <param name="Threshold" value="error" />
            <param name="BufferSize" value="10" />
            <param name="SMTPHost" value="smtp.host" />
            <param name="From" value="[email protected]" />
            <param name="To" value="CDB@mail" />
            <param name="Subject" value="[Site] Error - TST" />
            <param name="LocationInfo" value="false" />
            <layout class="org.apache.log4j.HTMLLayout">
                <param name="LocationInfo" value="false" />
            </layout>
        </appender>

        <root>
            <priority value="DEBUG" />
            <appender-ref ref="email" />
        </root>

    </log4j:configuration>

пом.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>Mail-logging-and-hbm2ddl</groupId>
<artifactId>Mail-logging-and-hbm2ddl</artifactId>
<version>1.0</version>


<dependencies>
    <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
    <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
<exclusions>
<!-- We need a higher version of ehcache -->
<exclusion>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>2.5.4</version>
</dependency>
 </dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources-${targetprofile}</directory>
            <filtering>false</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
<artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
<configuration>
 <source>${javaVersion}</source>
 <target>${javaVersion}</target>
 <encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
 <execution>
  <phase>process-classes</phase>
  <goals>
   <goal>hbm2ddl</goal>
  </goals>
 </execution>
</executions>
<configuration>
 <componentProperties>
  <propertyfile>
   src/main/resources-${targetprofile}/configuration.properties
  </propertyfile>
  <export>false</export>
  <drop>true</drop>
  <outputfilename>
   ${project.artifactId}-${project.version}-schema.sql
  </outputfilename>
 </componentProperties>
</configuration>
        </plugin>
    </plugins>
</build>

<properties>
<javaVersion>1.6</javaVersion>
</properties>

</project>

person DBC    schedule 31.12.2010    source источник


Ответы (2)


Этот другой вопрос дал мне ответ answer Таким образом, ответ должен добавить зависимость javax.mail к плагину следующим образом:

<build>
....

<plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <version>2.0</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>hbm2ddl</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <componentProperties>
                    <propertyfile>
                        src/main/resources-${targetprofile}/configuration.properties
                    </propertyfile>
                    <export>false</export>
                    <drop>true</drop>
                    <outputfilename>
                        ${project.artifactId}-${project.version}-schema.sql
                    </outputfilename>
                </componentProperties>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                    <version>1.4.3</version>
                </dependency>
            </dependencies>
        </plugin>
person DBC    schedule 31.12.2010

Из сообщения об ошибке, а также из журнала отладки видно, что зависимость javax.mail не является частью зависимостей, присутствующих при запуске hbm2ddl. Поскольку приведенное выше содержимое плохо отформатировано и, возможно, неполно, трудно сказать, почему. Одна возможность: javax.mail зависимость не включена. Или, если да, включен с неправильным (скажем, runtime) объемом.

Вы можете попробовать запустить цель, удалив SMTPAppender из log4j.xml, чтобы увидеть, работает ли она. Это поможет сузить проблему.

person Raghuram    schedule 31.12.2010
comment
Спс за быстрый ответ. Действительно, проверил форматирование, теперь должно выглядеть лучше. Зависимость от javax.mail включена в pom, область действия по умолчанию (поэтому время компиляции). Если я удалю ‹appender-ref ref=email›, все будет хорошо, но мне это нужно - person DBC; 31.12.2010