org.datanucleus.exceptions.NucleusUserException: Error : Could not find API definition for name "JPA"

319 Views Asked by At

Trying to create a java-se application using DataNucleus for dinamic generation of persistance unit by this code (which is in main method of Main class):

PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
pumd.addClassName("my.homework.entity.Procurement");
pumd.addProperty("datanucleus.ConnectionDriverName", "com.mysql.cj.jdbc.Driver");
pumd.addProperty("datanucleus.ConnectionURL", "jdbc:mysql://localhost:3306/" + schemaName + "?serverTimezone=Asia/Yekaterinburg");      
pumd.addProperty("datanucleus.ConnectionUserName", login);
pumd.addProperty("datanucleus.ConnectionPassword", password);
pumd.addProperty("datanucleus.schema.autoCreateTables", "true");

EntityManagerFactory emf = new JPAEntityManagerFactory(pumd, null);
entityManager = emf.createEntityManager();
ProcurementService procurementService = new ProcurementService(entityManager);

In idea the code works well. But when I'm trying to run application as an .exe file in Windows, I'm getting the error:

ш■ы 21, 2020 11:46:04 PM org.datanucleus.api.ApiAdapterFactory getApiAdapter
SEVERE: Error : Could not find API definition for name "JPA". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH?
Exception in thread "main" Error : Could not find API definition for name "JPA". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH?
org.datanucleus.exceptions.NucleusUserException: Error : Could not find API definition for name "JPA". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH?
        at org.datanucleus.api.ApiAdapterFactory.getApiAdapter(ApiAdapterFactory.java:93)
        at org.datanucleus.AbstractNucleusContext.<init>(AbstractNucleusContext.java:118)
        at org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:185)
        at org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:174)
        at org.datanucleus.api.jpa.JPAEntityManagerFactory.initialiseNucleusContext(JPAEntityManagerFactory.java:909)
        at org.datanucleus.api.jpa.JPAEntityManagerFactory.initialise(JPAEntityManagerFactory.java:515)
        at org.datanucleus.api.jpa.JPAEntityManagerFactory.<init>(JPAEntityManagerFactory.java:380)
        at my.homework.Main.main(Main.java:109)

Main.java:109:

EntityManagerFactory emf = new JPAEntityManagerFactory(pumd, null);

POM file:

<?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>my.homework</groupId>
    <artifactId>Dinar8</artifactId>
    <version>1.0</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
        <repository>
            <id>AsposeJavaAPI</id>
            <name>Aspose Java API</name>
            <url>https://repository.aspose.com/repo/</url>
        </repository>

        <repository>
            <id>akathist-repository</id>
            <name>Akathist Repository</name>
            <url>http://www.9stmaryrd.com/maven</url>
        </repository>
    </repositories>


    <dependencies>
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-cells</artifactId>
            <version>20.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.15.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jpa</artifactId>
            <version>5.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-rdbms</artifactId>
            <version>5.2.3</version>
        </dependency>
    </dependencies>

    <pluginRepositories>
        <pluginRepository>
            <id>akathist-repository</id>
            <name>Akathist Repository</name>
            <url>http://www.9stmaryrd.com/maven</url>
        </pluginRepository>
    </pluginRepositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>
                                        my.homework.Main
                                    </mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <version>1.7.25</version>
                <executions>
                    <execution>
                        <id>l4j-console</id>
                        <phase>package</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <headerType>console</headerType>
                            <outfile>target/Project13.exe</outfile>
                            <jar>target/Dinar8-1.0-SNAPSHOT-jar-with-dependencies.jar</jar>
                            <dontWrapJar>false</dontWrapJar>
                            <errTitle>Error in launch4j plugin</errTitle>
                            <classPath>
                                <mainClass>my.homework.Main</mainClass>
                                <addDependencies>true</addDependencies>
                            </classPath>
                            <jre>
                                <path>%JAVA_HOME%</path>
                                <jdkPreference>jdkOnly</jdkPreference>
                                <minVersion>1.7.0</minVersion>
                                <runtimeBits>64/32</runtimeBits>
                                <maxHeapPercent>100</maxHeapPercent>
                            </jre>
                            <icon>src/main/resources/icon13.ico</icon>
                            <versionInfo>
                                <fileVersion>1.0.0.0</fileVersion>
                                <txtFileVersion>1.0.0.0</txtFileVersion>
                                <fileDescription>Excel file analysis</fileDescription>
                                <copyright>Khmelev Stanislav</copyright>
                                <companyName>comp</companyName>
                                <productVersion>1.0.0.0</productVersion>
                                <txtProductVersion>${project.version}</txtProductVersion>
                                <productName>Project13</productName>
                                <internalName>Project13</internalName>
                                <originalFilename>Project13.exe</originalFilename>
                            </versionInfo>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>datanucleus-maven-plugin</artifactId>
                <version>5.0.2</version>
                <configuration>
                    <api>JPA</api>
                    <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
                    <verbose>true</verbose>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

What should I do to remove this error?

1

There are 1 best solutions below

0
Oragula On

Putting all three jar files:

   datanucleus-api-jpa-5.2.4.jar,
   datanucleus-core-5.2.3.jar,
   datanucleus-rdbms-5.2.3.jar

into the directory with .exe solving the problem.