EclipseLink + Maven: java.lang.NoClassDefFoundError: javax/persistence/Persistence

Мой Persistence.xml выглядит следующим образом:

<persistence-unit name="SARMPersistentUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>edu.deakin.sarms.model.StudentAccount</class>
    <class>edu.deakin.sarms.model.LecturerAccount</class>
    <class>edu.deakin.sarms.model.Unit</class>
    <class>edu.deakin.sarms.model.Enrollment</class>
    <class>edu.deakin.sarms.model.Attendance</class>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://xx.yy.ss:3306/t2"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.user" value="xx"/>
        <property name="javax.persistence.jdbc.password" value="ee"/>
        <property name="eclipselink.ddl-generation" value="drop-create-tables"/>

    </properties>
</persistence-unit>

pom.xml is as follows:

<?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>edu.deakin.sarms</groupId>
        <artifactId>sarms2</artifactId>
        <version>1.0-SNAPSHOT</version>

        <repositories>
            <repository>
                <id>oss.sonatype.org</id>
                <name>OSS Sonatype Staging</name>
                <url>https://oss.sonatype.org/content/groups/staging</url>
            </repository>
        </repositories>

        <dependencies>
             <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>2.5.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.eclipse.persistence</groupId>
                        <artifactId>commonj.sdo</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>javax.persistence</artifactId>
                <version>2.1.0</version>
            </dependency>

           <dependency>
                <groupId>javax.persistence</groupId>
                <artifactId>persistence-api</artifactId>
                <version>1.0.2</version>
            </dependency>



            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>


        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                        <encoding>UTF-8</encoding>
                        <fork>true</fork>
                        <meminitial>128M</meminitial>
                        <maxmem>512M</maxmem>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>

                        <archive>
                            <manifest>
                                <mainClass>edu.deakin.sarms.service.SarmsControl</mainClass>
                                <addClasspath>true</addClasspath>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

Тем не менее я получаю "java.lang.NoClassDefFoundError: javax/persistence/Persistence" в строке:

public static EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("SARMPersistentUnit");

Может ли кто-нибудь предложить, что я делаю неправильно?

Привет Айеша


person theAntonym    schedule 31.05.2014    source источник
comment
Создал проект и запустил из Idea - все работает. Как вы запускаете свое приложение? Попробуйте mvn exec:java -Dexec.mainClass="edu.deakin.sarms.service.SarmsControl"   -  person Andrzej Jozwik    schedule 02.06.2014
comment
Я тоже работаю над идеей. Я сделал, mvn чистая установка. Проверенный java -jar ‹jarname›. Ваша команда была полезна, но у меня была другая проблема: файл persistence.xml находился не в src/main/, а в src/main/resources. Итак, теперь моя проблема решена!   -  person theAntonym    schedule 03.06.2014


Ответы (1)


Я делал чистую установку mvn, а затем java -jar . Затем я использовал команду, упомянутую @ajozwk в комментарии, но у меня была другая проблема: файл persistence.xml находился в папке src/main/ вместо src/main/resources. Итак, теперь моя проблема решена!

person theAntonym    schedule 03.06.2014