Невозможно увидеть исходный файл Java в следах стека Java - PullRequest
4 голосов
/ 16 июня 2011

Я работаю над веб-приложением, развернутым на сервере Tomcat. В моей локальной тестовой системе я использую Eclipse и WST для развертывания своего кода на сервере. Если генерируются трассировки стека, я вижу исходный файл и номер строки для каждой строки - как и ожидалось.

Однако, если в производственной системе выдается исключение, неизвестен исходный файл, а также номер строки. Это касается только моего собственного кода, для всех элементов стека в трассировке внешних библиотек исходный файл и номер строки известны.

Я компилирую свой проект следующим образом (используя Ant):

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

Я абсолютно не могу понять, где проблема, хотя ее, должно быть, очень просто решить.

Спасибо за вашу помощь!

>> Редактировать: Еще немного информации о моем развертывании: я определенно использую эти цели Ant для создания файла войны:

<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>

В локальной системе я использую eclipse, чтобы выполнить развертывание для меня, поэтому я не использую ни одну из своих целей муравья. Может быть, мне нужны файлы .java при развертывании?

>> Edit2: Пример трассировки стека (Само исключение не проблема!):

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)

Ответы [ 2 ]

9 голосов
/ 16 июня 2011

Я нашел решение - просто и глупо:

В определении шага ant javac измените часть

debuglevel = "lines, vars, source"

до

debuglevel = "lines, vars, source" (без пробелов)

и все будет работать.

Erik

0 голосов
/ 16 июня 2011

Первым делом нужно проверить уровень ведения журнала, установленный для хост-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...