I misunderstood how Jersey find template file when resolving template name.
With resource com.example.app.Index
and template base path /templates
Relative Template Reference @Template(name = "index")
/templates/com/example/app/Index/index.mustache
Absolute Template Reference @Template(name = "/index")
/templates/index.mustache
see document for more detail : 19.3. Absolute vs. Relative template reference