phax / ph-ubl

Java library for reading and writing UBL 2.0, 2.1, 2.2, 2.3 and 2.4 (CS01) documents

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error when run createinvoicefromscratch

belya1979 opened this issue · comments

I'm using these libraries in my project:

  • junit-4.13.2.jar
  • ph-commons-10.1.0.jar
  • ph-ubl21-6.2.1.jar
  • ph-xsds-xmldsig-2.6.0.jar

when i run the CreateInvoiceFromScratchFuncTest.testCreateInvoiceFromScratch , i faced the following error . either with java 8 or java 11 . the error is as following :

Exception in thread "main" java.lang.NoClassDefFoundError: com/helger/xsds/ccts/cct/schemamodule/IdentifierType
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType.setID(InvoiceType.java:4269)
at javaapplication13.JavaApplication13.testCreateInvoiceFromScratch(JavaApplication13.java:56)
at javaapplication13.JavaApplication13.main(JavaApplication13.java:41)
Caused by: java.lang.ClassNotFoundException: com.helger.xsds.ccts.cct.schemamodule.IdentifierType
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 27 more

Well, you also need:

  • ph-xml (same version as ph-commons)
  • ph-jaxb (same version as ph-commons)
  • ph-xsds-xades132 (same version as ph-xsds-xmldsig)
  • ph-xsds-xades141 (same version as ph-xsds-xmldsig)
  • ph-xsds-ccts-cct-schemamodule (same version as ph-xsds-xmldsig)

I recommend to use Maven or Gradle to work around these issues.

thanks for your fast reply dear,
so, if i use Maven, what are exactly the dependencies which i should add them to the POM file. and their versions too
BTW: I'm using java 11 and i need to implement xml invoice using ubl2.1
Thanks again

If you use Maven, it includes all the needed dependencies "transitively".
In Maven you need to include this (with 6.7.0 is the latest and greatest version):

    <dependency>
      <groupId>com.helger.ubl</groupId>
      <artifactId>ph-ubl21</artifactId>
      <version>6.7.0</version>
    </dependency>

Amazing dear, all things built successfully after I use Maven. but I got a following runtime error:
java.lang.IllegalArgumentException: Failed to create JAXB context for package 'oasis.names.specification.ubl.schema.xsd.invoice_21' using ClassLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2cdf8d8a
at com.helger.jaxb.JAXBContextCacheKey._createFromPackageAndClassLoader(JAXBContextCacheKey.java:165)
at com.helger.jaxb.JAXBContextCacheKey.createJAXBContext(JAXBContextCacheKey.java:202)
at com.helger.jaxb.JAXBContextCache.lambda$new$0(JAXBContextCache.java:81)
at com.helger.commons.cache.MappedCache.getFromCache(MappedCache.java:337)
at com.helger.jaxb.JAXBContextCache.getFromCache(JAXBContextCache.java:124)
at com.helger.jaxb.JAXBContextCache.getFromCache(JAXBContextCache.java:166)
at com.helger.jaxb.builder.AbstractJAXBBuilder.getJAXBContext(AbstractJAXBBuilder.java:164)
at com.helger.jaxb.builder.AbstractWritingJAXBBuilder.createMarshaller(AbstractWritingJAXBBuilder.java:80)
at com.helger.jaxb.builder.JAXBWriterBuilder.createMarshaller(JAXBWriterBuilder.java:232)
at com.helger.jaxb.builder.JAXBWriterBuilder.write(JAXBWriterBuilder.java:298)
at com.helger.jaxb.IJAXBWriter.write(IJAXBWriter.java:381)
at com.helger.jaxb.IJAXBWriter.write(IJAXBWriter.java:234)
at com.helger.jaxb.IJAXBWriter.write(IJAXBWriter.java:195)
at com.ase.ubl.ubl21test.UBL21Test.testCreateInvoiceFromScratch(UBL21Test.java:131)
at com.ase.ubl.ubl21test.UBL21Test.main(UBL21Test.java:48)
Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.

  • with linked exception:
    [java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:131)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:318)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:478)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:435)
    at com.helger.jaxb.JAXBContextCacheKey._createFromPackageAndClassLoader(JAXBContextCacheKey.java:155)
    ... 14 more
    Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:92)
    at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:125)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
    ... 18 more
    Command execution failed.
    org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

My bad - I forget one "optional" depencency.
Please also add this:

    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
      <version>2.3.6</version>
    </dependency>

That is the main JAXB dependency, that does the heavy lifting

it's worked. u r the best ever. too many thanks..
I wish all the best for you

Thanks for the nice words. Good luck with your endeavours :)