Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-14

PCEnhancer ant task requires openjpa jars to be on the system classpath or passed into ant with '-lib'



    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • lib
    • None
    • Windows XP


      Ideally, one should be able to run 'ant openjpac' (openjpac would be a target defined in the build script that would use the PCEnhancer task) without having to put the openjpa jars on the system classpath or having to pass them into ant vie the '-lib' argument. Currently this is not possible. The root of the issue can be seen from by looking at the public static String[] getImplementors(String serviceName, ClassLoader loader) method of the Services class. Basically, the call to

      loader = Thread.currentThread().getContextClassLoader();

      returns a ClassLoader with the $ANT_HOME\lib*.jar and $JAVA_HOME\lib\tools.jar in it... which obviously doesn't contain 'META-INF/services/org.apache.openjpa.conf.ProductDerivation'

      The exception seen when encountering this issue:

      at org.apache.openjpa.conf.OpenJPAConfigurationImpl.<init>(OpenJPAConfigurationImpl.java:510)
      at org.apache.openjpa.conf.OpenJPAConfigurationImpl.<init>(OpenJPAConfigurationImpl.java:160)
      at org.apache.openjpa.conf.OpenJPAConfigurationImpl.<init>(OpenJPAConfigurationImpl.java:151)
      at org.apache.openjpa.ant.PCEnhancerTask.newConfiguration(PCEnhancerTask.java:77)
      at org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:170)
      at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
      at org.apache.tools.ant.Task.perform(Task.java:364)
      at org.apache.tools.ant.Target.execute(Target.java:341)
      at org.apache.tools.ant.Target.performTasks(Target.java:369)
      at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
      at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
      at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
      at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
      at org.apache.tools.ant.Main.runBuild(Main.java:668)
      at org.apache.tools.ant.Main.startAnt(Main.java:187)
      at org.apache.tools.ant.launch.Launcher.run(Launcher.java:251)
      at org.apache.tools.ant.launch.Launcher.main(Launcher.java:72)
      Caused by: java.util.MissingResourceException: Your system is missing product derivations. Product derivations provide configuration options for supported data stores and specifications. You must have a META-INF/services/org.apache.openjpa.conf.ProductDerivation file in your classpath listing the available derivation classes, and some listed class must be instantiable. Typically this file is bundled as part of the distribution. Have you unbundled it, or unbundled its listed classes?
      at org.apache.openjpa.conf.ProductDerivations.<clinit>(ProductDerivations.java:53)
      ... 17 more


        1. OPENJPA-14.patch1
          6 kB
          Bryan Noll
        2. OPENJPA-14.patch2
          8 kB
          Bryan Noll
        3. OPENJPA-14.patch3
          0.9 kB
          Bryan Noll
        4. OPENJPA-14.patch4
          2 kB
          Bryan Noll



            pcl Patrick Linskey
            bnoll Bryan Noll
            0 Vote for this issue
            0 Start watching this issue