Fala pessoal,
Eu criei uma aplicação utilizando VRaptor e fiz os testes na minha máquina local. Para acessar a aplicação eu utilizava meu endereço local padrão (localhost:porta/appname).
Até então beleza. O problema começou quando eu fiz o deploy da aplicação no Heroku. No log não ocorreu nenhum problema e as tabelas no banco de dados foram criadas corretamente. Entretanto, ao tentar acessar a aplicação com a url que o passa (http://appname.herokuapp.com) da Status HTTP 404 e se eu adicionar o nome da aplicação (/appname) na url acontece o mesmo erro. Eu criei um index.jsp e adicionei no web.xml e dessa forma foi. Enfim, quando acesso no Heroku é como se ele não encontrasse a aplicação que foi mapeada na classe controller.
Alguém tem alguma ideia do que possa ser? 
Obrigado!
Voce precisa configurar uma classe no seu projeto que é responsável por dar start no servidor. (Heroku usa embedded server)
Nessa classe voce configura qual vai ser contexto da sua aplicacao.
Exemplo:
public class TomcatLauncher {
private static final String WEBAPP_DIR_LOCATION = "src/main/webapp/";
public static void main(String args[]) throws ServletException, LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setPort(Integer.valueOf(getWebPort()));
tomcat.addWebapp("/minhaAplicacao", new File(WEBAPP_DIR_LOCATION).getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}
/**
* Retorna a porta que o servidor sera startado
* @return porta que o servidor sera startado
*/
private static String getWebPort() {
String webPort = System.getenv("PORT");
if(webPort == null || webPort.equals("")) {
webPort = "8080";
}
return webPort;
}
}
Seguindo o exemplo, para acessar a aplicacao seria:
http://appname.herokuapp.com/minhaAplicacao
Voce também pode acompanhar os logs com o comando:
heroku logs --tail
Valeu Nykolas, muito obrigado!