Не удается запустить openjpa tools из командной строки

#openjpa

#openjpa

Вопрос:

Что я сделал:

  • загрузите и извлеките последнюю версию openjpa (3.0.0)

  • загрузите jar-файл драйвера mariadb jdbc и скопируйте его в тот же каталог, где openjpa-all-3.0.0.jar находится

  • внутри того же каталога создайте подкаталог META_INF и файл META-INF/persistence.xml со следующим содержимым:

     <?xml version="1.0"?>
    <persistence version="1.0">
    <persistence-unit name="openjpa">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <properties>
            <property name="openjpa.ConnectionURL" value="jdbc:mariadb://localhost:3306/databasename"/>
            <property name="openjpa.ConnectionDriverName" value="org.mariadb.jdbc.Driver"/>
            <property name="openjpa.ConnectionUserName" value="dbuser"/>
            <property name="openjpa.ConnectionPassword" value="dbpassword"/>
            <property name="openjpa.DynamicEnhancementAgent" value="false"/>
            <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>
            <property name="openjpa.Log" value="SQL=TRACE"/>
            <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=120, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000"/>
        </properties>
    </persistence-unit>
      

  • создайте пустой каталог src в качестве подкаталога, в котором находятся файлы openjpa и mariadb driver jars

  • выполнил следующую команду:

    java -cp ./:openjpa-all-3.0.0.jar:mariadb-java-client-2.4.0.jar:openjpa-all-3.0.0.jar org.apache.openjpa.jdbc.meta.ReverseMappingTool -pkg some.package -d ./src

Вместо получения какого-либо вывода или ошибки, связанной с генерацией, я получаю:

 8  INFO   [main] openjpa.Tool - The reverse mapping tool will run on the database.  The tool is gathering schema information; this process may take some time.  Enable the org.apache.openjpa.jdbc.Schema logging category to see messages about schema data.
Exception in thread "main" <openjpa-3.0.0-r422266:1833209 fatal user error> org.apache.openjpa.util.UserException: The persistence provider is attempting to use properties in the persistence.xml file to resolve the data source. A Java Database Connectivity (JDBC) driver or data source class name must be specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. The following properties are available in the configuration: "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@f248234b". 
        at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:71)
        at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:850)
        at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:733)
        at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:879)
        at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:921)
        at org.apache.openjpa.jdbc.schema.SchemaGenerator.<init>(SchemaGenerator.java:86)
        at org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:2027)
        at org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:2005)
        at org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:1882)
        at org.apache.openjpa.jdbc.meta.ReverseMappingTool$1.run(ReverseMappingTool.java:1863)
        at org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:762)
        at org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:747)
        at org.apache.openjpa.jdbc.meta.ReverseMappingTool.main(ReverseMappingTool.java:1858)
  

Что я делаю не так?

Я пробовал варианты этого, добавляя -p persistence.xml#openjpa, -p #openjpa и -connectionDriverName org.mariadb.jdbc.Driver в командную строку, но это не имело никакого значения.

Комментарии:

1. вы пробовали использовать проект maven? это должно упростить управление зависимостями

2. Требование заключается в том, чтобы очень конкретно не использовать maven.

3. вы пробовали указывать путь к классу в текущем каталоге? также используя полный путь?

4. Только что пробовал. Добавлены оба полных пути вместо / и указан каждый jar по его полному пути. Та же ошибка. Был бы удивлен, если бы была какая-либо разница.

5. я заглянул в свой проект, и хотя я использую mariadb, я фактически использую mysql connector (5.1.33). также я настроил свой источник данных с помощью TomEE, поэтому я ничего не определяю в persistence.xml . извините, я не смог вам помочь. вы пробовали использовать список рассылки?