Jasperreports - Classe Scriptlet em relatório criado via JasperDesign

Olá, estou criando um relatório utilizado as classes do JasperDesign, ou seja, montando os componentes na mão, sem arquivo .jrxml.

Tenho a necessidade de utilizar uma classe Scriptlet neste relatório, e para isso inseri a seguinte linha no meu código:

Também tentei da seguinte forma

Em todos os dois casos ocorre o seguinte erro:

 net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 
	 1. java.lang.ClassNotFoundException: No ClassLoaders found for: class br.ucam.campos.dti.professor.web.util.DiarioProfessorScriptlet
19:11:58,656 ERROR [STDERR] 	at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:258)
19:11:58,656 ERROR [STDERR] 	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:140)
19:11:58,656 ERROR [STDERR] 	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
19:11:58,656 ERROR [STDERR] 	at br.ucam.campos.dti.professor.web.controller.helper.ImpressaoDiario.imprimirFrente(ImpressaoDiario.java:465)
19:11:58,656 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
19:11:58,656 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
19:11:58,656 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
19:11:58,656 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Unknown Source)
19:11:58,656 ERROR [STDERR] 	at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
19:11:58,656 ERROR [STDERR] 	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
19:11:58,671 ERROR [STDERR] 	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
19:11:58,671 ERROR [STDERR] 	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
19:11:58,671 ERROR [STDERR] 	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
.
.
.

No meu caso a minha classe scriptlet (DiarioProfessorScriptlet) encontra-se no mesmo pacote que a classe que gera o relatório.
Necessita colocar algo mais para utilizar o scriptlet via JasperDesign ou simplesmente não esta encontrando o caminho?

Há algumas possibilidades:

  • Coloque o nome completo da classe: br.ucam.campos.dti.professor.web.util.DiarioProfessorScriptlet;
  • Compile o relatório, e só então passe como parâmetro: JRParameter.REPORT_SCRIPTLET.
    Abraço!

Neste caso não há como fazer compilação antes pois como falei estou criando o relatório via código, sem arquivo .jrxml.
Mas de qualquer maneira descobri o problema, apenas dei um “clean” no meu projeto, e usei o trecho de código:

Funcionou, mas a causa realmente não sei, é como se não estivesse achando o .class da classe Scriptlet.
Agora está funcionando, muito obrigado pela ajuda.