Как отлаживать приложение Play с помощью активатора?
Я знаю, что для классической платформы Play это play debug ~run
. Я попытался запустить activator debug ~run
, но я получаю следующую ошибку:
[error] Not a valid command: debug (similar: idea)
[error] Not a valid project ID: debug
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: debug (similar: debianSign, node)
[error] debug
[error] ^
Что я делаю неправильно?
Ответы
Ответ 1
Если вы просто делаете activator ~run
, то вы должны иметь возможность передавать порт отладочного порта JVM с помощью:
./activator -jvm-debug <port> ~run
Это может не делать то же самое, что и воспроизведение, но здесь аргументы, добавляемые в командную строку:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>
С:
https://github.com/typesafehub/activator/blob/master/dist/src/templates/activator#L107
Я успешно присоединился к этому процессу в своей среде IDE.
Если вы работаете в Windows, автоматическая настройка немного отличается. С помощью последнего активатора вы можете сделать следующее:
- Откройте
%UserProfile%\.activator\activatorconfig.txt
(UserProfile отличается в зависимости от установки Windows. Mine имеет значение C:\Documents and Settings\jsuereth
для одной установки и C:\Users\jsuereth
для другого). В файле указано следующее:
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
- Вы можете установить свойство JAVA_OPTS в командной строке перед запуском активатора, например.
set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"
Надеюсь, что это поможет!
Ответ 2
У меня есть windows7 и активатор 1.2.12, и ответы выше не работают для меня. Вместо этого я использовал параметр "-jvm-debug" команды "activator.bat" исходной папки проекта, и он сработал. Вот так:
C:\Projects\MyProject>activator -jvm-debug
Listening for transport dt_socket at address: 9999
[info] Loading global plugins from C:\Users\MyAccount\.sbt\0.13\plugins
[info] Loading project definition from C:\Projects\MyProject\project
[info] Set current project to MyProject (in build file:/C:/Projects/MyProject/)
Затем внутри активатора (sbt) я использовал команду "run". Вот так:
[MyProject] $ run
--- (Running the application, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
'force' enabled
(Server started, use Ctrl+D to stop and go back to the console...)
Running "watch" task
Чтобы отладить от eclipse, щелкните правой кнопкой мыши проект и выберите "Debug As, Debug Configurations". В диалоговом окне "Конфигурации отладки" щелкните правой кнопкой мыши "Удаленное приложение Java" и выберите "Создать". Измените порт на 9999 и нажмите "Применить". С этого момента вы можете нажать "Отладка" для подключения к запущенному приложению.
Ответ 3
Еще одна вещь, которую я обнаружил:
fork in run := false
fork in Test := false
в "build.sbt".
Это позволяет вам отлаживать ваши тесты не только самим приложением.
Ответ 4
С картой воспроизведения 2.x:
Внутри каталога проекта запустите команду активатора, например
активатор -jvm-debug 9999 run
Как только это будет сделано, отлаживайте проект как приложение Remote Java в своей среде IDE, чтобы подключить его к процессу активации.
Как только это будет сделано, вы сможете сломать код в любом месте.:)
Ответ 5
Я попробовал решение Readren, но с использованием сообщества сообщества IntelliJ IDEA (поэтому нет встроенной поддержки воспроизведения) вместо Eclipse.
Это в основном способ документирования работы с новыми файлами Activafe Activator (я использую 1.3.2). Для меня приложение запускалось, и отладчик IntelliJ выглядел так, как будто он подключался, но он не попадал ни в какие точки останова (также точки останова в IntelliJ не имели метки, указывающей, что они не собираются попадать).
Я попытался изменить настройку DEBUG_OPTS в файле activator.bat, чтобы использовать форму -agentlib аргументов командной строки jdwp, и это, похоже, исправить ее для меня.
rem set DEBUG_OPTS=-Xdebug -Xrunjdwp:tnsport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
set DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
Вероятно, я должен помещать это в файл activatorconfig.txt где-то, но потратил около 4 часов, пытаясь заставить это работать - так что это для меня сейчас достаточно...
Я использую следующую JVM, если это имеет значение:
версия java "1.7.0_75"
Java (TM) SE Runtime Environment (сборка 1.7.0_75-b13)
Java HotSpot (TM) 64-разрядная серверная VM (сборка 24.75-b04, смешанный режим)