Почему выполнение отладки в 0.13.7 завершается с ошибкой "не удалось найти библиотеку агента jdwp: транспорт по пути к библиотеке"?

после обновления от 0.13.6 to 0.13.7 Я не могу отлаживать с SBT. Он устанавливается с помощью Homebrew. Я попытался переустановить его, brew doctor ничего не показывает. Я не менял/переустанавливал Java между SBT обновление.

lgr$ sbt -v -jvm-debug 5005 "project webapp" run
[process_args] java_version = '1.8.0_25'
# Executing command line:
java
-Xms1024m
-Xmx1024m
-XX:ReservedCodeCacheSize=128m
-XX:MaxMetaspaceSize=256m
-agentlib:jdwp:transport=dt_socket,server=y,suspend=n,address=5005
-jar
/usr/local/Cellar/sbt/0.13.7/libexec/sbt-launch.jar
"project webapp"
run

Error occurred during initialization of VM
Could not find agent library jdwp:transport on the library path, with error: dlopen(libjdwp:transport.dylib, 1): image not found

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

переустановить Java, не помощь.

решение я скачал SBT 0.13.6 и он работает без проблем, поэтому я начинаю рассматривать это как ошибку sbt. Может ли кто-нибудь помочь прояснить, если это так?

4 ответов


к piggyback на ответ Евгения выше, так как исправление находится в сценарии bash, довольно легко применить исправление из https://github.com/sbt/sbt-launcher-package/pull/85/files вручную. Просто отредактируйте bin/sbt-launch-lib.bash для этого:

addJava "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address="

вместо этого:

addJava "-agentlib:jdwp:transport=dt_socket,server=y,suspend=n,address="

(виду : не = между jdwp и transport).


Он устанавливается с помощью Homebrew.

Homebrew install санкционирован проектом sbt как рекомендуемый способ установки на Mac, но мы (я один из разработчиков sbt) в настоящее время не контролируем его. Однако у нас есть официальный пакет sbt / sbt-launcher-пакет, и последний раз я проверял Homebrew также использует его.

смотрим git blame соответствующей части скрипта, похоже, что опция отладки была "исправлено" в sbt / sbt-launcher-пакет#83:

в sbt-launch-lib.опция bash, - Xdebug используется для отладки. Мы должны использовать опцию-agentlib для Java 5+.

возможно, ваша проблема должна отслеживаться как ошибка в sbt/sbt-launcher-package.


проблема была исправлена в версии 0.13.8.


в моем случае исправление bash не помогло, но работает от bash как:

export SBT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" 
sbt

помогло. Это от здесь.