Erro ao tentar gerar boleto no android Stella Boleto

5 respostas
javaprogramaçãoandroid
T

Venho tentando resolver esse erro a alguns dias, cheguei a encontrar em um fórum onde uma pessoa informava: “You need install all Library jasperreports”, eu sou meio leigo nisso eu imagino que já tenho instalado, instalei com base na propria wiki do Stella Boleto

Meu build.gradle:

dependencies {
        implementation 'androidx.appcompat:appcompat:1.3.1'
        implementation 'com.google.android.material:material:1.4.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
        implementation 'com.google.android.libraries.places:places:2.5.0'
        implementation 'com.google.firebase:firebase-database:20.0.2'
        implementation 'com.google.firebase:firebase-analytics'
        implementation files('libs/mail.jar')
        implementation files('libs/activation.jar')
        implementation files('libs/additionnal.jar')

        implementation files('libs/caelum-stella-boleto-2.1.5.jar')
        implementation files('libs/caelum-stella-core-2.1.5.jar')
        implementation files('libs/barbecue-1.5-beta1.jar')
        implementation files('libs/jasperreports-6.18.1.jar')
        implementation files('libs/itextpdf-5.5.13.2.jar')
        implementation files('libs/commons-beanutils-1.9.4.jar')
        implementation files('libs/commons-collections4-4.4.jar')
        implementation files('libs/commons-digester3-3.2.jar')
        implementation files('libs/commons-logging-1.2.jar')

        implementation 'androidx.gridlayout:gridlayout:1.0.0'
        implementation 'com.google.firebase:firebase-storage:20.0.0'
        testImplementation 'junit:junit:4.13.2'
        implementation platform('com.google.firebase:firebase-bom:28.3.1')
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
   }

Tive que adicionar um resources.excludes porque retornava erro de duplicancia

android {
        packagingOptions {
            resources.excludes.add('jasperreports_extension.properties');
       }
}

implementei os mais atualizado mas desconfio que vá ocorrer erro no itext futuramente, eu peguei o mais atualizado que achei no Maven Repository não sei se é o certo, textei varios mais o erro continuava.

Essa é a parte do codigo onde ocorre o erro.

GeradorDeBoleto gerador = new GeradorDeBoleto(boleto);

// gerador.geraPDF é onde ocorre o erro
gerador.geraPDF(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/BoletoBradesco.pdf");

// Aqui também da erro se eu remover a o de cima
gerador.geraPDF(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/BoletoBradesco.png");

// Para gerar um array de bytes a partir de um PDF
@SuppressWarnings("unused")
byte[] bPDF = gerador.geraPDF();

// Para gerar um array de bytes a partir de um PNG
@SuppressWarnings("unused")
byte[] bPNG = gerador.geraPNG();

Por via de curiosidade esse é o erro completo que me retorna.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.imovel.find_imovel, PID: 13648
    java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Font;
        at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.resolveObject(ContextClassLoaderObjectInputStream.java:121)
        at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java:1401)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2002)
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:503)
        at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:777)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1067)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1902)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1803)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:278)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:262)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:737)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:1061)
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraRelatorio(GeradorDeBoleto.java:119)
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraPDF(GeradorDeBoleto.java:160)
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraPDF(GeradorDeBoleto.java:210)
        at com.imovel.find_imovel.Login$2.onClick(Login.java:280)
        at android.view.View.performClick(View.java:7339)
        at android.widget.TextView.performClick(TextView.java:14275)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7305)
        at android.view.View.access$3200(View.java:846)
        at android.view.View$PerformClick.run(View.java:27787)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7078)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.Font" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.imovel.find_imovel-AWR9m2pBsYlrNtHAdi7qZQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.imovel.find_imovel-AWR9m2pBsYlrNtHAdi7qZQ==/lib/arm64, /system/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.resolveObject(ContextClassLoaderObjectInputStream.java:121) 
        at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java:1401) 
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2002) 
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:503) 
        at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:777) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1067) 
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1902) 
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1803) 
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) 
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:278) 
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:262) 
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:737) 
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:1061) 
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraRelatorio(GeradorDeBoleto.java:119) 
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraPDF(GeradorDeBoleto.java:160) 
        at br.com.caelum.stella.boleto.transformer.GeradorDeBoleto.geraPDF(GeradorDeBoleto.java:210) 
        at com.imovel.find_imovel.Login$2.onClick(Login.java:280) 
        at android.view.View.performClick(View.java:7339) 
        at android.widget.TextView.performClick(TextView.java:14275) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
        at android.view.View.performClickInternal(View.java:7305) 
        at android.view.View.access$3200(View.java:846) 
        at android.view.View$PerformClick.run(View.java:27787) 
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7078) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

5 Respostas

R

tá dando erro pq ele nao ta achando essa lib, vc ta codando pra android? até onde eu sei, nao existe esse package na lib do android

T

Ahhh, isso faz bastante sentido, sabe alguma alternativa ?

PS: Sim é para android

L

Ih rapaiz. Confesso que nunca ouvi falar, e, mesmo pesquisando aqui, não achei nenhuma referẽncia. O que acho é que normalmente os apps fazem uso de um backend que faz a geração do boleto e, então, envia o arquivo para o app.

R

isso mesmo

T

Entendi, vou estudar sobre isso. Agradeço a você e ao rodrigues por me responderem <3

Criado 2 de dezembro de 2021
Ultima resposta 2 de dez. de 2021
Respostas 5
Participantes 3