Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java (未知源)使用Tomcat7、Maven和Jensor Profiler在StackTrace中_Java_Maven_Tomcat_Tomcat7_Stack Trace - Fatal编程技术网

Java (未知源)使用Tomcat7、Maven和Jensor Profiler在StackTrace中

Java (未知源)使用Tomcat7、Maven和Jensor Profiler在StackTrace中,java,maven,tomcat,tomcat7,stack-trace,Java,Maven,Tomcat,Tomcat7,Stack Trace,相关问题 我的案例 我正在使用maven 3.1.0编译一个项目。然后它部署在我的stacktrace上的Tomcat7上,我得到(未知源代码)而不是(myclass.java:14)。它发生在我的类中,但在其他库中正常工作 从相关主题中,我了解到这是由于类文件中缺少行号造成的。这可能是由于使用了jre或配置错误造成的。以下是我尝试过的一些步骤: 我最近从jdk1.6迁移到jdk1.7.0_21(这似乎是问题的原因)。我尝试了三种java安装(jdk1.7.0_21、32和64位以及jdk

相关问题

我的案例

我正在使用maven 3.1.0编译一个项目。然后它部署在我的stacktrace上的Tomcat7上,我得到(未知源代码)而不是(myclass.java:14)。它发生在我的类中,但在其他库中正常工作

从相关主题中,我了解到这是由于类文件中缺少行号造成的。这可能是由于使用了jre或配置错误造成的。以下是我尝试过的一些步骤:

  • 我最近从jdk1.6迁移到jdk1.7.0_21(这似乎是问题的原因)。我尝试了三种java安装(jdk1.7.0_21、32和64位以及jdk1.7.0_45)。JAVA_HOME指向正确的文件夹
  • 我看到我们可以在javac中添加debug和debuglevel选项。我尝试使用以下配置将它们添加到maven中。我还强制使用javac而不是javax

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <debuglevel>lines,vars,source</debuglevel>
                <debug>true</debug>
                <forceJavacCompilerUse>true</forceJavacCompilerUse>
            </configuration>
        </plugin>
    

    问题很可能来自tomcat7方面。

    问题来自JVM

    我使用Jensor分析我的应用程序。它使用方面和javaagent来收集数据


    通过从java选项中删除
    -javaagent:…
    解决了这个问题

    您可以尝试使用
    javap
    检查编译的
    .class
    文件。虽然不太可能,但也有可能行在那里,但Tomcat在加载它们时做了一些改变。您还可以使用单个测试java文件和POM中的编译器选项创建一个全新的项目,以帮助您简化任务。运行
    mvn帮助:effective pom
    查看maven的最终配置。@biziclop Ok奇怪的
    javap-l
    显示行号表。我将在tomcat侧边查看它一定是tomcat中的一些VM优化标志或类似标志。还没有。我在tomcat或VM方面没有发现任何有趣的东西。我应该去做一个简单的测试用例,但我还没有时间。但我觉得奇怪的是问题来自tomcat。
    public void init();
      LineNumberTable:
        line 31: 0
        line 32: 10
        line 33: 21
        ...