2011-06-15 3 views
4

Je travaille sur une application web déployée sur un serveur Tomcat. Sur mon système de test local, j'utilise Eclipse et le WST pour déployer mon code sur le serveur. Si des traces de pile sont lancées, je peux voir le fichier source et le numéro de ligne pour chaque ligne - comme prévu. Toutefois, si une exception est levée sur le système de production, le fichier source est inconnu, ainsi que le numéro de ligne. C'est le cas uniquement pour mon propre code, pour tous les éléments de pile dans la trace des bibliothèques externes, le fichier source et le numéro de ligne sont connus.Impossible de voir le fichier source java dans les traces de la pile Java

Je compile mon projet comme suit (en utilisant Ant):

<javac srcdir="${src}" destdir="${build}" fork="true" debug="true" debuglevel="lines, vars, source"> 
    <classpath refid="classpath" /> 
</javac> 

je peux absoutely pas savoir où le problème est, bien qu'il doit être super simple à résoudre.

Merci pour votre aide!

>> Edit: Quelques informations sur mon déploiement: Je suis certainement l'aide de ces cibles Ant pour créer le fichier de guerre:

<target name="compile" depends="update-dependencies"> 
    <mkdir dir="${build}" /> 
    <javac srcdir="${src}" destdir="${build}" fork="true" debug="true" debuglevel="lines, vars, source"> 
     <classpath refid="classpath" /> 
    </javac> 
    <javac srcdir="${tests}" destdir="${build}" fork="true" debug="true" debuglevel="lines, vars, source"> 
     <classpath refid="classpath" /> 
    </javac> 

    <!-- Copy non-java files --> 
    <copydir dest="${build}" src="${src}"> 
     <exclude name="**/*.java"/> 
    </copydir> 

    <copydir dest="${build}" src="${tests}"> 
     <exclude name="**/*.java"/> 
    </copydir> 
</target> 


<target name="war" depends="compile">  
    <war destfile="${war.file}" webxml="WebContent/WEB-INF/web.xml"> 
     <fileset dir="WebContent" /> 
     <lib dir="${lib}" /> 
     <classes dir="${build}" /> 
    </war> 
</target> 

Sur le système local, j'utiliser Eclipse pour faire le déploiement pour moi , donc je n'utilise aucune de mes cibles de fourmis. Ai-je besoin des fichiers .java dans le déploiement peut-être?

>> Edit2: trace Exemple pile (L'exception est elle-même pas de problème!):

javax.naming.NamingException: Name is not valid 
     at org.apache.naming.NamingContext.unbind(NamingContext.java:248) 
     at org.apache.naming.NamingContext.unbind(NamingContext.java:282) 
     at org.apache.naming.SelectorContext.unbind(SelectorContext.java:256) 
     at javax.naming.InitialContext.unbind(InitialContext.java:416) 
     at org.hibernate.impl.SessionFactoryObjectFactory.removeInstance(SessionFactoryObjectFactory.java:139) 
     at org.hibernate.impl.SessionFactoryImpl.close(SessionFactoryImpl.java:894) 
     at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.destroy(AbstractSessionFactoryBean.java:251) 
     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.destroy(LocalSessionFactoryBean.java:899) 
     at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:184) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:487) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:463) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:431) 
     at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1048) 
     at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1022) 
     at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:970) 
     HERE: at my.pkg.ContextLoaderListener.closeWebApplicationContext(Unknown Source) 
     HERE: at my.pkg.ContextLoaderListener.contextDestroyed(Unknown Source) 
     at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4174) 
     at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4778) 
     at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:924) 
     at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1319) 
     at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1290) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:323) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1086) 
     at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098) 
     at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:450) 
     at org.apache.catalina.core.StandardService.stop(StandardService.java:587) 
     at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744) 
     at org.apache.catalina.startup.Catalina.stop(Catalina.java:648) 
     at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:692) 
+0

pouvez-vous afficher la ligne où elle se casse et la trace de journal correspondante qu'elle montre? – Bhushan

+3

Déployez-vous localement le même fichier war que celui que vous déployez en production ou le reconstruisez-vous? J'ai les mêmes scripts ant et il construit sans problème. –

+0

Avez-vous vérifié que le code déployé sur le serveur de production utilise ce script ant pour sa construction? Beaucoup de gens de RE essayent d'éviter de mettre des données de débogage dans les pots qu'ils construisent. – vkraemer

Répondre

9

J'ai trouvé la solution - simple et stupide:

Dans la fourmi definintion étape javac, changer la partie

debuglevel = "lignes, vars, source"

à

debuglevel = "lignes, vars, source" (pas d'espaces)

et cela fonctionnera.

Erik

0

La première chose à vérifier peut être le niveau de journalisation défini pour le serveur d'hébergement.

Questions connexes