什么可能导致“无法安装断点”问题运行mvn tomcat7的web应用程序:run-war?

时间:2016-06-28 17:24:18

标签: java eclipse maven tomcat

开始失去理智,我会把自己拉到一起,在这里写一个正确的问题..

我不知道为什么或我做了什么,因为我没有改变任何应该影响这个的东西,但突然之间我得到了这个:

  

由于缺少行号属性,无法在com.company.whatever.MyObjectService $$ EnhancerBySpringCGLIB $$ e3b7e123中安装断点。

或截图:

enter image description here

是的,我已经检查了Prefences下的内容,并按照here的建议进行了检查。

我不知道为什么但是我最近因为这样的错误而感到困扰 - 让我不能完成我需要完成的实际工作..

这是我的maven命令:

mvn tomcat7:run-war -am -pl mz-web-server -Dpackage-mode=dev -Denv=dev  -DskipTests

究竟是什么原因?

是的,我有

  • mvn clean install
  • 打开/关闭Eclipse
  • 刷新项目资源管理器
  • 查看Prefences - > Java - >编译器 - >类文件生成
  • ...还:取消设置,申请,再次设置,申请行号信息选项
  • 使用JDK代替JRE
  • 与上帝交谈,甚至考虑改变我的职业

但没有任何帮助!

4 个答案:

答案 0 :(得分:1)

您声明使用maven,因此IDE中的选项不太可能对此有很大帮助。 相反,你应该更专注于maven或更具体地说是构建插件。

确保您已启用debug模式并使用正确的level

例如:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <debug>true</debug>
                <debuglevel>lines,vars,source</debuglevel>
            </configuration>
        </plugin>
    </plugins>
</build>

答案 1 :(得分:0)

我经常遇到Jboss这个问题。

当我坚持使用它时,我只需清理我的部署目录并重新部署我的war / jar,一切正常。

你也可以尝试一下&#34;丑陋的&#34;替代方案并尝试远程调试您的应用程序。

答案 2 :(得分:0)

我猜你已经尝试了所有这些情况,但是今天我在尝试调试使用JDK 1.6在Tomcat 6中部署的“旧”和有点凌乱的Spring应用程序时遇到了问题。

经过多次检查后:

  • 正确添加到.class文件的行号(通过javap检查 -v)。
  • 从Eclipse / IntelliJ正确附加到Tomcat。
  • 为构建任务(Ant)正确添加了调试和调试级别。
  • 清理IDE和Tomcat中的所有缓存,重建,重新部署。

但仍然得到“缺少行号”错误。我遇到问题的项目是几年前第三方使用Ant开发的。

那时出了什么问题?

每个IDE都允许您配置存储编译文件的位置。例如,对于Eclipse,默认文件夹是/bin(如果它是Maven项目,它是/target),对于IntelliJ,它是/out。 我的项目使用Ant,并在${webroot.dir}/WEB-INF/classes这样的文件夹中编译文件(如build.xml文件中的编译任务所示),然后将这些.class文件添加到生成的war中。

<property name="classes.dir" value="${webroot.dir}/WEB-INF/classes" />
<target name="compile" depends="prepare,resources">
    <javac srcdir="${basedir}/src/main/java" destdir="${classes.dir}" debug="on" debuglevel="lines,vars,source">
        ...
    </javac>
</target>

问题是IDE在/ bin文件夹中查找了.class文件,但我的新编译的.class文件放在另一个地方。更改项目配置(Eclipse和IntelliJ)中的输出文件夹并指向同一个Ant的编译文件夹后,断点开始按预期工作。

我知道您正在使用Maven并且我的案例正在使用Ant,但是任何构建自动化工具都会发生该文件夹混乱,您指定输出文件夹并且与您正在使用的IDE中的项目配置不匹配。< / p>

希望你的理智还可以;)

答案 3 :(得分:0)

当我仅在工作场所中的一个项目上工作时,我遇到了此消息,因此得出的结论是,由于该项目具有相同的groupID和文件结构/程序包,因此属于同一工作场所中的其他项目(我试图从jdbc更改为休眠,因此我只复制了大部分内容)。 所以我的猜测是,由于文件具有相同的名称和路径,因此编译器在确定放置断点的位置时遇到了问题,因此当SPRING发挥作用时,编译器尝试将其放置在原始文件中,而不是新文件中。 >

更改包装会导致消息消失。