66

我正在尝试将断点放入 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,所以我决定退回到 Provided 范围内。

我还使用了模块依赖项选项卡上的导出复选框,但我认为这无关紧要,根据网络帮助,导出仅在您有依赖模块并且您希望使您的库在这些模块中可用时才重要。

无论如何,这个问题也出现在4 年前。所以我现在想知道解决这个问题是否真的那么难?

我现在非常失望。到目前为止,我对 IDEA 没有任何问题......我看到其他人也出现了这个问题,所以我猜这不是唯一的。

任何帮助表示赞赏。


由于下面的实验,我编辑了我的问题javap: 类和源似乎没有不同步。我从 SVN 中检查了 1.7.0 相关的修订,并且我使用的是 1.7.0 SDK,所以这些根本不应该不同步。

4

18 回答 18

85

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

  1. 如果您正在使用 Maven 依赖项,请转到 Maven 项目 -> 刷新
  2. 如果这不起作用,请尝试顶部菜单 --> 构建 --> 重建项目
  3. 如果仍然不起作用,请尝试顶部菜单 --> 文件 --> 使缓存无效/重新启动
  4. 如果仍然不起作用,则 $CATALINA_BASE/bin/catalina.sh 停止,然后启动

在此之后,通常它涵盖了 99% 的问题。否则,可能您将不得不检查其他一些可能性。

于 2014-04-23T18:39:00.563 回答
22

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

于 2014-11-10T16:55:42.597 回答
9

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

于 2012-07-21T11:25:58.337 回答
6

我能够通过重新编译有问题的类来解决这个问题:Build - > Recompile (filename.java)

于 2017-02-10T11:05:17.867 回答
4

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

于 2019-03-28T17:19:00.657 回答
4

这个问题相当古老,但我认为我的经验可能会在未来对某人有所帮助。就我而言,我试图调试未使用调试信息编译的代码。我正在使用 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 中设置了断点。

于 2016-03-04T13:20:48.513 回答
4

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

于 2016-06-30T13:10:29.593 回答
3

菜单 --> 文件 --> 使缓存无效/重新启动

这在 IntelliJ 13.0.2 下对我有用

于 2015-04-13T06:29:06.807 回答
2

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

于 2013-07-31T20:34:39.257 回答
2

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

于 2015-07-07T01:08:19.790 回答
2

在我的情况下,我正在远程调试,发现远程服务器和Intellij上的代码版本不同步。我在本地重新构建了最新的代码,将相同的更改放在远程服务器上,它对我有用。
您可以尝试更多可能针对JetBrains建议的问题的解决方案。 无法调试“警告:在线上找不到可执行代码”。

于 2019-12-24T14:15:00.127 回答
1

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

于 2014-10-28T13:45:39.973 回答
1

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

您应该停止服务器,增加传递给 java 的选项的内存设置,然后重新启动服务器。检查日志以确保您没有收到诸如“以低内存模式运行”之类的报告。

于 2015-06-03T11:53:33.227 回答
0

我正在开发一个 Intellij 插件,当 Intellij 沙箱弹出时,最终解决了我的问题是,一旦沙箱 intellij 弹出,我就从那里重建。

之后,我构建了我的 Intellij 和沙盒 Intellij,它们最终同步了。

于 2018-10-02T12:48:54.773 回答
0

只需停止调试过程并重新启动它。就我而言,就这么简单。

于 2021-08-28T04:02:56.080 回答
0

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

于 2016-07-12T12:02:39.377 回答
0

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

于 2017-06-13T18:30:28.890 回答
0

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

于 2015-09-03T09:27:32.360 回答