Estou usando simplejavamail no meu aplicativo Quarkus. Tenho a biblioteca e seu módulo batch incluídos no meu pom.xml:
<dependency>
<groupId>org.simplejavamail</groupId>
<artifactId>simple-java-mail</artifactId>
<version>8.12.4</version>
</dependency>
<dependency>
<groupId>org.simplejavamail</groupId>
<artifactId>batch-module</artifactId>
<version>8.12.4</version>
</dependency>
Meu código funciona bem no ambiente de desenvolvimento, mas depois de construir a imagem nativa, recebo este erro:
org.simplejavamail.internal.moduleloader.ModuleLoaderException: Batch module not found, make sure it is on the classpath (https://github.com/bbottema/simple-java-mail/tree/develop/modules/batch-module)
at org.simplejavamail.internal.moduleloader.ModuleLoader.loadModule(ModuleLoader.java:133)
at org.simplejavamail.internal.moduleloader.ModuleLoader.loadBatchModule(ModuleLoader.java:95)
at org.simplejavamail.mailer.internal.MailerGenericBuilderImpl.determineDefaultExecutorService(MailerGenericBuilderImpl.java:674)
at org.simplejavamail.mailer.internal.MailerGenericBuilderImpl.buildOperationalConfig(MailerGenericBuilderImpl.java:319)
at org.simplejavamail.mailer.internal.MailerImpl.<init>(MailerImpl.java:128)
at org.simplejavamail.mailer.internal.MailerRegularBuilderImpl.buildMailer(MailerRegularBuilderImpl.java:212)
Tentei registrar a classe BatchModule para reflexão, mas sem sucesso:
import io.quarkus.runtime.annotations.RegisterForReflection;
import org.simplejavamail.internal.modules.BatchModule;
@RegisterForReflection(targets = {
BatchModule.class
})
public class LibReflectionRegister {
}
Como posso corrigir isso?
PS: Não sei se esse problema está relacionado a essa propriedade que defini para resolver outro erro de compilação:
quarkus:
native:
additional-build-args: "--initialize-at-run-time=org.simplejavamail.internal.util.MiscUtil"
Como você já notou,
simplejavamail
ele não é suportado pelo Quarkus e, portanto, requer alguma configuração extra para funcionar no modo nativo.Analisando https://github.com/bbottema/simple-java-mail/blob/ac9a42997c062cdb8f48dfa112930cc1c8d04af1/modules/simple-java-mail/src/main/java/org/simplejavamail/internal/moduleloader/ModuleLoader.java#L75-L87 , entendo que o código está sendo usado
org.simplejavamail.internal.batchsupport.BatchSupport
para avaliar se o módulo está disponível ou não. Portanto, você precisaria registrar esta classe para reflexão, mas receio que isso só permitirá que você supere esse erro até encontrar outro.A inicialização do tempo de execução
org.simplejavamail.internal.moduleloader.ModuleLoader
também pode ser necessária.