E9.2 QR Code - JAR Encoder Deployment

Soumen

Reputable Poster
Dears Community,

We are trying to implement QRCode in XMLP (Embedded BI Publisher) in JDE. We have procured the QRCode font from IDAutomation and have followed the steps to install the QRCode font and implement the JAVA encoder class. The QRCode is working on the FAT client but now we need to deploy this to the server.

My question is how do we deploy the JAVA encoder class on server, which files need edit and where to we deploy this?

On the FAT client the JAR encoder was deployed to the BI Publisher standalone directory but we don't have such a directory on Enterprise Server.

Any ideas or pointers will be helpful.

Thanks,

Soumen

9.2 update 2, 9.2.4.3, Windows 2016, SQL Server 2016
 

JEMILLER

VIP Member
Have a look at support document:


E1: XMLP: How to Use Custom Fonts with Embedded Publisher for EnterpriseOne (Doc ID 652457.1)​

The defalt location for BIP fonts are:

Tools release prior to 9.2 (all platforms except AS400)
EnterpriseOne folder <E1Install>\system\JRE\lib\fonts

Tools release 9.2 and above (all platforms except AS400)
EnterpriseOne folder ...\E920\jdeJre\lib\fonts

You will find xdo.cfg within the <E1Install>/system/classes

I personally prefer to create a dedicated bipfonts folder that sits outside of the system folder and point to it via xdo.cfg. I copy all the standard BIP fonts there and add any custom ones like the IDAutomation fonts.
 

pehel

Member
Hi JEMiller,

I tried this but it isn't wrking ,We Get following error while running the template

Caused by: java.lang.NoClassDefFoundError: com/idautomation/fontencoder/qrcode/QRCodeEncoder
at oracle.qrcode.EWQrCode.qrcode

Regards,
Pehel
 

FedeRygo

Member
Hi JEMiller,

I tried this but it isn't wrking ,We Get following error while running the template

Caused by: java.lang.NoClassDefFoundError: com/idautomation/fontencoder/qrcode/QRCodeEncoder
at oracle.qrcode.EWQrCode.qrcode

Regards,
Pehel
Hi Pehel,
in this case IDAutomation*.jar is in the wrong position.
What I did is to extract .jar contents and add files to xdo-core.jar.. It solves this issue BUT it is not enough..

Here my scenario:
JDE TR 9.2.3.5
Java ver. 8u92

What I tried:
.Tim Dexter's way --> works locally but not on ENT;
. Compile .java with JDK 8u92, add .class to xdocore.jar (locally) and xdo-core.jar (enterprise).. referencing IDAutomation.jar --> works locally but not on ENT;
. Extract IDAutomation.jar and add contents (with my.class) to xdocore.jar (locally) and xdo-core.jar (enterprise) --> works locally but not on ENT;

At the moment xdo.log reporting this error:
Code:
[021221_162141887][][ERROR] java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.psbi.barcode.BarcodeUtil.encode(BarcodeUtil.java:75)
    at oracle.xdo.template.rtf.util.XDOBarcodeUtil.encodeBarcode(XDOBarcodeUtil.java:99)
    at oracle.xdo.template.rtf.XSLTFunctions.format_barcode(XSLTFunctions.java:3582)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.xdo11g.xpath.XSLExtFunctions.callStaticMethod(XSLExtFunctions.java:117)
    at oracle.xdo11g.xpath.XPathExtFunction.evaluateMethod(XPathExtFunction.java:341)
    at oracle.xdo11g.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:266)
    at oracle.xdo11g.xslt.XSLValueOf.processAction(XSLValueOf.java:129)
    at oracle.xdo11g.xslt.XSLNode.processChildren(XSLNode.java:480)
    at oracle.xdo11g.xslt.XSLTemplate.processAction(XSLTemplate.java:205)
    at oracle.xdo11g.xslt.XSLStylesheet.execute(XSLStylesheet.java:585)
    at oracle.xdo11g.xslt.XSLStylesheet.execute(XSLStylesheet.java:551)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:345)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:193)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:230)
    at oracle.xdo11g.parser.v2.XSLProcessor.processXSL(XSLProcessor.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.xdo.common.xml.XSLT10gR1.invokeProcessXSL(XSLT10gR1.java:1028)
    at oracle.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:720)
    at oracle.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:377)
    at oracle.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:238)
    at oracle.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1276)
    at oracle.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:308)
    at oracle.xdo.template.FOProcessor.createFO(FOProcessor.java:2094)
    at oracle.xdo.template.FOProcessor.generate(FOProcessor.java:1201)
    at com.jdedwards.xmlp.templates.RtfTemplate.generateReport(Unknown Source)
    at com.jdedwards.xmlp.base.XmlpProxy.generateReport(Unknown Source)
Caused by: java.lang.NullPointerException
    at com.idautomation.fontencoder.qrcode.QRCodeEncoder.FontEncode(com/idautomation/fontencoder/qrcode/QRCodeEncoder)
    at oracle.psbi.barcode.BarcodeUtil.qrcode(BarcodeUtil.java:104)

anyone could help us?!
 

Naza

Active Member
Hi Pehel,
in this case IDAutomation*.jar is in the wrong position.
What I did is to extract .jar contents and add files to xdo-core.jar.. It solves this issue BUT it is not enough..

Here my scenario:
JDE TR 9.2.3.5
Java ver. 8u92

What I tried:
.Tim Dexter's way --> works locally but not on ENT;
. Compile .java with JDK 8u92, add .class to xdocore.jar (locally) and xdo-core.jar (enterprise).. referencing IDAutomation.jar --> works locally but not on ENT;
. Extract IDAutomation.jar and add contents (with my.class) to xdocore.jar (locally) and xdo-core.jar (enterprise) --> works locally but not on ENT;

At the moment xdo.log reporting this error:
Code:
[021221_162141887][][ERROR] java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.psbi.barcode.BarcodeUtil.encode(BarcodeUtil.java:75)
    at oracle.xdo.template.rtf.util.XDOBarcodeUtil.encodeBarcode(XDOBarcodeUtil.java:99)
    at oracle.xdo.template.rtf.XSLTFunctions.format_barcode(XSLTFunctions.java:3582)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.xdo11g.xpath.XSLExtFunctions.callStaticMethod(XSLExtFunctions.java:117)
    at oracle.xdo11g.xpath.XPathExtFunction.evaluateMethod(XPathExtFunction.java:341)
    at oracle.xdo11g.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:266)
    at oracle.xdo11g.xslt.XSLValueOf.processAction(XSLValueOf.java:129)
    at oracle.xdo11g.xslt.XSLNode.processChildren(XSLNode.java:480)
    at oracle.xdo11g.xslt.XSLTemplate.processAction(XSLTemplate.java:205)
    at oracle.xdo11g.xslt.XSLStylesheet.execute(XSLStylesheet.java:585)
    at oracle.xdo11g.xslt.XSLStylesheet.execute(XSLStylesheet.java:551)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:345)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:193)
    at oracle.xdo11g.xslt.XSLProcessor.processXSL(XSLProcessor.java:230)
    at oracle.xdo11g.parser.v2.XSLProcessor.processXSL(XSLProcessor.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at oracle.xdo.common.xml.XSLT10gR1.invokeProcessXSL(XSLT10gR1.java:1028)
    at oracle.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:720)
    at oracle.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:377)
    at oracle.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:238)
    at oracle.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1276)
    at oracle.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:308)
    at oracle.xdo.template.FOProcessor.createFO(FOProcessor.java:2094)
    at oracle.xdo.template.FOProcessor.generate(FOProcessor.java:1201)
    at com.jdedwards.xmlp.templates.RtfTemplate.generateReport(Unknown Source)
    at com.jdedwards.xmlp.base.XmlpProxy.generateReport(Unknown Source)
Caused by: java.lang.NullPointerException
    at com.idautomation.fontencoder.qrcode.QRCodeEncoder.FontEncode(com/idautomation/fontencoder/qrcode/QRCodeEncoder)
    at oracle.psbi.barcode.BarcodeUtil.qrcode(BarcodeUtil.java:104)

anyone could help us?!
Hi i can offer totaly free a java application developed by me that can take the pdf from some directory (configurable) reads some fields or acces to the data base if you need and put a qr code in specific possition that you need.
Also you can send the pdf by mail or send to an specific printer.

Please if this can help you message me and we coordinate the delivery (it is totaly free and no require licence)
Regards.
Nazareno
 

BOster

Legendary Poster
Not sure I can help you with implementing QR codes directly in BIP since we went a different route. The way we did it was simply to create a QR code servlet (can also serve up bar codes and dot matrix). In the BI template we simply list the URL to the servlet, passing info to be encoded in the URL and the servlet returns the QR code. There are publicly available URLs that do the same thing, but we wanted to have complete control over it and not worry about availability, etc. so we created our own.
 

FedeRygo

Member
Problem Solved!

I found that my problem was to reference *.dat files used by IDAutomation QRCode encoder.. When I move them into xdo-core.jar IDAutomation's classes stop to work due to NullPointerExcepiton.

Here what I did:
  • I embedded my custom class into the original ID Automation QRCode encoder's jar file;
  • I changed manifest.mf inside convtops.jar adding encoder's jar file;
    1614028700524.png
  • I leave xdo-core.jar untouched.
I'm pretty sure that it could works by changing xdo-core's manifest.mf instead of convtops.jar

That's all ^^
 
Top