DataNucleus Maven enhancer plugin error - class not found

693 views Asked by At

I'm running the DataNucleus Enhancer plugin from Maven

        <plugin>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-maven-plugin</artifactId>
            <version>${datanucleus.maven.plugin.version}</version>
            <configuration>
                <log4jConfiguration>${project.build.outputDirectory}/log4j.properties</log4jConfiguration>
                <verbose>true</verbose>
                <enhancerName>ASM</enhancerName>
                <api>JPA</api>
                <fork>false</fork>
                <metadataIncludes>com/mydomain/*.class</metadataIncludes>
                <generateConstructor>true</generateConstructor>
            </configuration>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

but I get this error while running mvn process-classes -X

[DEBUG] Configuring mojo org.datanucleus:datanucleus-maven-plugin:4.0.0-release:enhance from plugin realm ClassRealm[plugin>org.datanucleus:datanucleus-maven-plugin:4.0.0-release, parent: sun.misc.Launcher$AppClassLoader@5dcba031]
[DEBUG] Configuring mojo 'org.datanucleus:datanucleus-maven-plugin:4.0.0-release:enhance' with basic configurator -->
[DEBUG]   (f) alwaysDetachable = false
[DEBUG]   (f) api = JPA
[DEBUG]   (f) classpathElements = [/home/me/workspace/myproject/target/classes, ...]
[DEBUG]   (f) detachListener = false
[DEBUG]   (f) fork = false
[DEBUG]   (f) generateConstructor = true
[DEBUG]   (f) generatePK = true
[DEBUG]   (f) log4jConfiguration = /home/me/workspace/myproject/target/classes/log4j.properties
[DEBUG]   (f) metadataDirectory = /home/me/workspace/myproject/target/classes
[DEBUG]   (f) metadataIncludes = com/mydomain/*.class
[DEBUG]   (f) pluginArtifacts = [org.datanucleus:datanucleus-maven-plugin:maven-plugin:4.0.0-release:, org.codehaus.plexus:plexus-utils:jar:3.0.8:compile, org.codehaus.plexus:plexus-component-annotations:jar:1.5.5:compile, org.sonatype.sisu:sisu-inject-bean:jar:2.3.0:compile, org.sonatype.sisu:sisu-guice:jar:no_aop:3.1.0:compile, org.sonatype.sisu:sisu-guava:jar:0.9.9:compile, org.apache.xbean:xbean-reflect:jar:3.4:compile, log4j:log4j:jar:1.2.12:compile, commons-logging:commons-logging-api:jar:1.1:compile, com.google.collections:google-collections:jar:1.0:compile, junit:junit:jar:3.8.2:compile]
[DEBUG]   (f) quiet = false
[DEBUG]   (f) useFileListFile = auto
[DEBUG]   (f) verbose = true
[DEBUG] -- end configuration --
[DEBUG] Metadata Directory is : /home/me/workspace/myproject/target/classes
[INFO]   CP: ...
[INFO]   CP: /home/me/workspace/myproject/target/classes
[INFO]   CP: ...
DataNucleus Enhancer (version 4.0.4) for API "JPA"
DataNucleus Enhancer : Classpath
>>  /usr/share/maven/boot/plexus-classworlds-2.x.jar
ERROR [main] DataNucleus.MetaData (Log4JLogger.java:115) - Class "com.mydomain.#UNKNOWN" has MetaData yet the class cant be found. Please check your CLASSPATH specifications.
Class "com.mydomain.MyClass" has MetaData yet the class cant be found. Please check your CLASSPATH specifications.
ERROR [main] DataNucleus.Enhancer (Log4JLogger.java:125) - DataNucleus Enhancer completed with an error. Please review the enhancer log (at DEBUG level) for full details. Some classes may have been enhanced but some caused errors
Class "com.mydomain.MyClass" has MetaData yet the class cant be found. Please check your CLASSPATH specifications.
org.datanucleus.metadata.InvalidClassMetaDataException: Class "com.mydomain.MyClass" has MetaData yet the class cant be found. Please check your CLASSPATH specifications.
    at org.datanucleus.metadata.ClassMetaData.populateMemberMetaData(ClassMetaData.java:468)
    at org.datanucleus.metadata.ClassMetaData.populate(ClassMetaData.java:219)
    at org.datanucleus.metadata.MetaDataManagerImpl$1.run(MetaDataManagerImpl.java:2822)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.datanucleus.metadata.MetaDataManagerImpl.populateAbstractClassMetaData(MetaDataManagerImpl.java:2816)
    at org.datanucleus.metadata.MetaDataManagerImpl.populateFileMetaData(MetaDataManagerImpl.java:2639)
    at org.datanucleus.metadata.MetaDataManagerImpl.initialiseFileMetaDataForUse(MetaDataManagerImpl.java:1324)
    at org.datanucleus.metadata.MetaDataManagerImpl.loadClasses(MetaDataManagerImpl.java:613)
    at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:711)
    at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:488)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1139)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.datanucleus.maven.AbstractDataNucleusMojo.executeInJvm(AbstractDataNucleusMojo.java:331)
    at org.datanucleus.maven.AbstractEnhancerMojo.enhance(AbstractEnhancerMojo.java:281)
    at org.datanucleus.maven.AbstractEnhancerMojo.executeDataNucleusTool(AbstractEnhancerMojo.java:81)
    at org.datanucleus.maven.AbstractDataNucleusMojo.execute(AbstractDataNucleusMojo.java:125)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

DataNucleus Enhancer completed with an error. Please review the enhancer log (at DEBUG level) for full details. Some classes may have been enhanced but some caused errors

I checked the target/classes directory and the class is in there. Running mvn compile results in success.

1

There are 1 answers

0
Adrian Ber On BEST ANSWER

The problem was an @AssociationOverride annotation with a wrong @JoinColumn name. I guess the error message should have been more clearer.