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'

    XMLWordPrintableJSON

Details

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

    Description

      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:

      java.lang.ExceptionInInitializerError
      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

      Attachments

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

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: