无法在Intellij IDEA中设置Java断点

时间:2012-07-21 11:13:08

标签: java debugging google-app-engine intellij-idea

我正在尝试将断点放入GoogleAppEngine来源(SDK 1.7.0),但IDEA Ultimate(11.0.2)只是告诉我Warning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl

当我从单元测试中运行代码并启动开发服务器时,我收到此错误消息。

这是相当年轻的。无论如何,我的源代码位于外部(相对于IDEA主目录和项目主目录)目录,而我的jar文件位于Appengine SDK lib目录下。

我的jar文件作为项目库添加​​到模块中,我的源文件附加到此库。我也在玩模块依赖,但没有任何运气。最后我决定把这个库放到Compile范围内,但这是一个坏主意,因为SDK在运行时提供了这些jar,所以我决定回到提供范围。

我还使用了模块依赖项选项卡上的导出复选框,但我认为这是无关紧要的,根据web help,导出仅在您拥有依赖模块且您希望使您的库可用时才很重要这些模块也是如此。

无论如何,这个问题也出现了4 years ago。所以我现在想知道解决这个问题是否真的很难?

我现在非常失望。到目前为止我对IDEA没有任何问题......我也看到了这个问题arised to other people,所以这不是我想的唯一问题。

感谢任何帮助。


由于我的javap实验,我编辑了我的问题:似乎类和来源 NOT 不同步。我查看了SVN的1.7.0相关版本,我使用的是1.7.0 SDK,所以这些版本不应该是不同步的。

18 个答案:

答案 0 :(得分:61)

我遇到了类似的问题,并且已经进行了各种尝试。以下是我通常的步骤:

  1. 如果您使用的是Maven依赖项,请转到Maven Projects - >刷新
  2. 如果这不起作用,请尝试顶级菜单 - >构建 - >重建项目
  3. 如果仍然无效,请尝试顶级菜单 - >档案 - >无效缓存/重启
  4. 如果仍然无效,则$ CATALINA_BASE / bin / catalina.sh停止,然后启动
  5. 在此之后,通常它会覆盖99%的问题。否则,你可能需要检查其他一些可能性。

答案 1 :(得分:15)

我在intellij中调试时遇到了类似的问题。我无法在其中一个代码片段中放置断点,然后我更改了代码的行号,之后我就可以放置断点了。看起来像intellij中的一个错误或一些缓存问题。

答案 2 :(得分:7)

我发现其他一些案例,人们报告说IDEA说“找不到可执行代码”。一种常见的模式是他们试图调试没有调试信息的代码。检查您是否使用“-g”标志(或等效的)设置进行编译。

答案 3 :(得分:4)

问题的本质是JVM执行一个类文件(简单类或从类路径从jar加载的类),它与调试器使用的源不匹配。 理解之后,解决方案很简单:确保源代表正在执行的类。 因此,要解决问题,您可以刷新 - 将源同步到类等。

答案 4 :(得分:3)

这个问题相当陈旧,但我认为我的经历可能在将来帮助某人。在我的情况下,我试图调试未使用调试信息编译的代码。我正在使用maven,其中修改前的原始父pom文件在构建部分中看起来如下所示。

<build>
    <pluginManagement>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <target>${javaCompilerVersion}</target>
              <source>${javaCompilerVersion}</source>
              <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <!--More plugins...-->
     </pluginManagement>
</build>

我更改了上面的部分,使其看起来如下所示。

<build>
    <pluginManagement>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <target>${javaCompilerVersion}</target>
              <source>${javaCompilerVersion}</source>
              <encoding>UTF-8</encoding>
              <debug>true</debug>
              <debuglevel>lines,vars,source</debuglevel>
            </configuration>
        </plugin>
        <!--More plugins...-->
     </pluginManagement>
</build>

请注意添加的<debug><debuglevel>元素。 debuglevel元素可以使用逗号分隔的三个参数的任意组合。

在编译完这个改变后,我终于设法在IDEA中设置了断点。

答案 5 :(得分:2)

我有同样的问题。我不知道为什么,但是对我来说,它有助于在代码中添加任何修改,例如添加或删除注释。奇怪,但解决了我的问题

答案 6 :(得分:2)

我能够通过重新编译有问题的类来解决这个问题: 构建 - &gt;重新编译(filename.java)

答案 7 :(得分:1)

我遇到了类似的问题,这是由我的Tomcat配置中的错误引起的,在部署选项卡下,“在服务器启动时部署”。我不小心把它变成了一个非常类似的项目,“:战争爆炸”。当我把它改回来时,它工作得很好。

答案 8 :(得分:1)

有同样的问题,发现服务器上的代码版本和我调试的代码版本不同。同步代码后问题得到解决。

答案 9 :(得分:1)

如果您正在使用某些服务器,它们将进入“低内存模式”,这意味着无论您使用哪种选项或缓存,它们都不会为您调试。

您应该停止服务器,增加传递给java的选项的内存设置并重新启动服务器。检查日志以确保您不会收到“以低内存模式运行”等报告。

答案 10 :(得分:1)

菜单 - &gt;档案 - &gt;无效缓存/重启

这在IntelliJ 13.0.2下适用于我

答案 11 :(得分:1)

请确保您没有运行Proguard。它帮助了我。

答案 12 :(得分:0)

在我的情况下,我杀死了设备上的所有正在运行的进程并断开连接并重新连接。

答案 13 :(得分:0)

在我的Tomcat中使用调试配置时遇到了同样的问题。 我尝试了以上所有,但没有。 当我刚刚重新配置Tomcat时(调试&gt;编辑配置&gt;删除tomcat&gt;从头开始再添加它)它终于工作了:)

答案 14 :(得分:0)

检查光盘空间并释放一些内存。如果您的磁盘空间不足,即使您的服务器未处于低内存模式&#34;,IntelliJ也不会分配空间来缓存调试所需的类。因此,它不允许您设置断点。

答案 15 :(得分:0)

我当时正在研究Intellij插件,当Intellij沙箱弹出时,最终解决了我的问题是,一旦弹起intellij沙箱,我便从那里重建了。

此后,我同时构建了Intellij和沙箱Intellij,并最终进行了同步。

答案 16 :(得分:0)

在我的情况下,我远程调试,发现远程服务器和 Intellij 上的代码版本不同步。我在本地重建了最新的代码,将相同的更改放置在远程服务器上,并且对我有用。
您可以尝试一些其他解决方案,这些解决方案可能是 JetBrains 建议的针对您的问题的解决方案。 Impossible to debug "Warning: no executable code found at line."

答案 17 :(得分:-3)

重新启动电脑。 它解决了我的情况。 简单是最好的..