Datanucleus + Maven:找不到主要 class SchemaTool

Datanucleus + Maven: cannot find main class SchemaTool

我正在尝试使用 Datanucleus 作为数据库抽象来创建一个 Maven 项目。但是,当我尝试 mvn datanucleus:schema-create 时,出现以下错误:

[ERROR] --------------------
[ERROR]  Standard error from the DataNucleus tool + org.datanucleus.store.schema.SchemaTool :
[ERROR] --------------------
[ERROR] Error: Could not find or load main class org.datanucleus.store.schema.SchemaTool

pom.xml 文件中的相关部分是:

<dependencies>
    <dependency>
        <groupId>javax.jdo</groupId>
        <artifactId>jdo-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-core</artifactId>
        <version>4.0.4</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-api-jdo</artifactId>
        <version>4.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-rdbms</artifactId>
        <version>4.0.4</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <!-- <version>3.2</version> -->
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-maven-plugin</artifactId>
            <version>4.0.0-release</version>


            <configuration>
                <api>JDO</api>
            </configuration>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

persistence.xml 文件位于 /src/main/resources/META-INF/persistence.xml,包含以下内容:

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd” 版本="2.0">

<!-- JDO tutorial "unit" -->
<persistence-unit name="Tutorial">
    <class>a.b.c.MyClass</class>
    <exclude-unlisted-classes />
    <properties>
        <property name="javax.jdo.option.PersistenceUnitName" value="Tutorial" />
        <property name="javax.jdo.option.ConnectionURL" value="jdbc:mysql://localhost/mydb" />
        <property name="javax.jdo.option.ConnectionDriverName"
            value="com.mysql.jdbc.Driver" />
        <property name="javax.jdo.option.ConnectionUserName" value="myuser" />
        <property name="javax.jdo.option.ConnectionPassword" value="mypass" />
        <property name="datanucleus.schema.autoCreateAll" value="true" />
        <property name="datanucleus.schema.validateTables" value="true" />
        <property name="datanucleus.schema.validateConstraints"
            value="true" />
        <property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />
    </properties>
</persistence-unit>

在我未经训练的人看来,一切似乎都已就绪,但它不起作用。

也许是您的 <scope>runtime</scope> 导致了问题,因为那个 jar 包含这个 class。无论是与否,您都可以轻松地在命令行上启用 Maven 调试 --debug 并查看该操作的 CLASSPATH 中的内容。