Você passou a opção -l , informando grep para listar apenas os nomes dos arquivos. Esses são os nomes dos arquivos .jar , não há outros arquivos envolvidos.
Se você quiser que grep envie os nomes das classes, será necessário remover -l . Mas isso imprimirá muitas outras porcarias na mesma “linha”, porque os frascos são arquivos binários, não organizados por linhas. (Com o GNU grep, você precisa passar -a para obter essa saída e não apenas “Arquivo binário… corresponde”.)
Com o GNU grep, uma possibilidade é combinar o nome completo da classe e passar -o para produzir apenas isso:
grep -rao --include='*.jar' '[0-9A-Z_a-z]*SignonEJB[0-9A-Z_a-z]*' .
ou se você quiser os pacotes também
grep -rao --include='*.jar' '[$./0-9A-Z_a-z]*SignonEJB[0-9A-Z_a-z]*' .
Outra abordagem é executar strings nos arquivos primeiro para extrair sequências imprimíveis. (Os dois comandos são equivalentes; a versão sed engole em \& e newline, a versão awk suporta todos os caracteres.)
find . -name '*.jar' -exec sh -c 'strings "$0" | grep SignonEJB | sed "s&^&$0&"' {} \;
find . -name '*.jar' -exec sh -c 'strings "$0" | jar=$0 awk "/SignonEJB/ {print ENVIRON[\"jar\"] \":\" $0}"' {} \;
Como alternativa (e estritamente falando, mais confiável, mesmo que seja improvável que usar grep apresente falsos positivos), use unzip para listar os nomes dos arquivos e filtrar isso.
find . -name '*.jar' -exec sh -c 'unzip -l -- "$0" | grep SignonEJB' {} \;