Вопрос по java, google-app-engine, debugging, intellij-idea – Невозможно установить точку останова Java в Intellij IDEA

48

Я пытаюсь установить точки останова в исходных кодах 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 находятся в директории lib Appengine SDK lib.

Мои jar-файлы добавляются в модуль как библиотека проекта, а мои источники прикрепляются к этой библиотеке. Я также играл с модульными зависимостями, но безуспешно. Наконец, я решил поместить эту библиотеку в область компиляции, но это была плохая идея, поскольку SDK предоставляет эти файлы jar во время выполнения, поэтому я решил вернуться к предоставленной области.

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

Во всяком случае, этот вопрос возник4 года назад также. Поэтому мне интересно, неужели так сложно решить эту проблему?

Я сейчас очень разочарован. До сих пор у меня не было проблем с IDEA ... Я видел, что эта проблемавозникла к другим людям ну, так что это не уникально, я думаю.

Любая помощь приветствуется.

Я отредактировал свой вопрос из-за моегоjavap эксперименты ниже: кажется, что классы и источникиNOT не синхронизировано. Я проверил связанную версию 1.7.0 из SVN, и я использую 1.7.0 SDK, поэтому они вообще не должны быть синхронизированы.

Ваш Ответ

16   ответов
-2

Перезагрузите компьютер. Это решило мой случай. просто самое лучшее ..

7

Я обнаружил некоторые другие случаи, когда люди сообщали, что IDEA говорит: «Не найден исполняемый код». Распространенным примером является то, что они пытались отладить код, который был собран без отладочной информации. Убедитесь, что вы компилируете с помощью & quot; -g & quot; флаг (или эквивалент) установлен.

Хммм ... Звучит логично ... :) Я попытаюсь выяснить, как он был построен, но, поскольку я не тот, кто скомпилировал код (это Google), я действительно не знаю, как я должен сделать это. Есть предложения по этому поводу? Captain Fogetti
Хорошо ... Я только что нашел ваш другой ответ, связанный с тем, как узнать, доступна ли отладочная информация ... Вы действительно полезный парень! :) Я попробую. Captain Fogetti
Это не сработало для меня. На самом деле, я НИКОГДА не использовал & quot; -g & quot; флаг в IDEA и в большинстве случаев мне удавалось отлаживать мой код.
Так. Я попробовалjavap -v Команда, которая успешно разобрала класс. Теперь то, что я вижу, только подтвердило мое предыдущее подозрение. В разобранном файле написаноLineNumberTable: line 481: 0 это точно номер строки заголовка метода, в который я поместил свою точку останова (я поставил ее на следующей строке). Таким образом, кажется, что класс и источник синхронизированы (что не является большим сюрпризом в любом случае). Captain Fogetti
1

Была такая же проблема, выяснили, что версия кода на сервере и та, которую я отлаживаю, разные. После синхронизации кода проблема была решена.

1

Если вы используете некоторые серверы, они перейдут в «режим малой памяти», что означает, что они не будут отлаживаться для вас, независимо от того, какие параметры или кэши вы аннулируете.

Вы должны остановить свой сервер, увеличить настройки памяти в опциях, которые передаются в Java и перезапустить ваш сервер. Проверьте журналы, чтобы убедиться, что вы не получили такой отчет, как «Работа в режиме нехватки памяти».

0

У меня была та же проблема с использованием конфигурации отладки в моем случае Tomcat. Я перепробовал все выше, но ничего. когда я только что переконфигурировал Tomcat (отладка & gt; изменить конфигурацию & gt; удалить tomcat & gt; добавить его снова с нуля), он наконец заработал :)

15

У меня была похожая проблема в Intellij. Я не смог поставить точку останова на один из фрагментов кода, я изменил номер строки кода, а затем я смог поставить точку останова. Похоже, ошибка в intellij

У меня точно такая же ситуация :( Когда я меняю строку, я могу поставить точку останова!
4

Суть проблемы заключается в том, что JVM выполняет файл класса (либо простой класс, либо класс, загруженный из jar из пути к классам), который НЕ СООТВЕТСТВУЕТ источнику, используемому отладчиком. Когда это понятно, решение простое: убедитесь, что источник представляет исполняемый класс. Итак, чтобы решить проблему, вы можете обновить синхронизацию источников с классами и т. Д.

0

Проверьте место на диске и освободите память. Если у вас недостаточно места на диске, даже если ваш сервер не находится в режиме «недостаточно памяти», intelliJ не выделит место для кэширования классов, необходимых для отладки. В результате он не позволит вам установить точку останова.

60

У меня были похожие проблемы и были предприняты различные попытки. Ниже мои обычные шаги:

If you are using Maven dependencies, go to Maven Projects -> refresh If that does not work, Try top menu --> Build --> Rebuild Project If that still doesn't work, try top menu --> File --> Invalidate Cache/Restart If that still doesn't work, then $CATALINA_BASE/bin/catalina.sh stop, then start

После этого обычно это покрывает 99% проблем. В противном случае, вероятно, вам придется изучить некоторые другие возможности.

Завершение работы сервера из диспетчера задач решило это в моем случае. Кажется, что intellij не всегда может успешно завершить работу моего сервера
Есть ли способ сделать недействительными кэши без удаления локальной истории?
1

У меня была похожая проблема, и она была вызвана ошибкой в моей конфигурации Tomcat на вкладке «Развертывание» «Развертывание при запуске сервера». Я случайно изменил его на очень похожий проект с "quot; war взорвался". Когда я вернул его обратно, все заработало нормально.

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&g,t;
              <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.

0

Я работал над плагином Intellij, и когда появилась песочница Intellij, что окончательно решило мою проблему, как только всплыла песочница intellij, я отстроил заново.

После этого я собрал и свой Intellij, и песочницу Intellij, и они наконец синхронизировались.

2

Я смог решить эту проблему, перекомпилировав соответствующий класс: Построить - & gt; Перекомпилировать (filename.java)

1

Пожалуйста, убедитесь, что вы не запускали Proguard. Это помогло мне.

Это больше похоже на комментарий.
0

В моем случае я убил все запущенные процессы на устройстве, отключил и снова подключил его.

1

Меню - & gt; Файл - & gt; Invalidate Cache / Restart

Это работало для меня под IntelliJ 13.0.2

Похожие вопросы