Ответ 1
В конце концов, он все еще работает с
set JAVA_TOOLS=-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y
в файле bat.
У меня есть приложение Java Web Start, которое я использовал для запуска через ярлык:
"C:\Program Files\Java\jdk1.7.0_67\bin\javaws.exe" -J-Dfile.encoding=UTF-8 -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8200" http://xxx/yyy/zzz.jnlp
Но после установки JDK 1.8 все перестало работать, мои javaws не видят никаких дополнительных параметров X || D. Я пробовал так:
setenv JAVAWS_VM_ARGS "-Dfile.encoding=UTF-8 -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8200"
"C:\Program Files\Java\jdk1.8.0_25\bin\javaws.exe" http://pont/dms/InstallDMS_debug.jnlp
Но не использовать.
Единственное решение, которое я нашел, - это установить параметры с помощью панели управления Java, добавив их непосредственно в JVM.
Control Panel > Java > Java (tab) > View (button) > Runtime parameters (field)
Как я могу установить параметры для 1,8 старого старого стиля?
P.S. JDK 1.6 x32 все еще хорошо работает с ярлыками. x64 1.7 запускается, но ссылается на 1.8 libs, поэтому я думаю, что все JDK x64 находятся в сговоре.
В конце концов, он все еще работает с
set JAVA_TOOLS=-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y
в файле bat.
Вопиющий кражи Saeid Nourian comment-answer:
Добавьте -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y
к аргументам панели управления Java.
Начиная с (приблизительно) версии 1.7.0_022 java web start launcher значительно изменяет список предоставленных JVM-аргументов и свойств, рассматривая огромные из них как незащищенные.
Вы можете установить переменную среды JAVA_TOOL_OPTIONS с описанными выше отладчиками вместо параметров панели управления java перед запуском JNLP файла. (См. http://www.oracle.com/technetwork/java/javase/envvars-138887.html#gbmsy и http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#tooloptions). Это исправление предыдущего ответа Ивана.
Например, вы можете попробовать следующий пакетный файл, который был протестирован для JDK 1.8.0_60:
setlocal
set JAVAWS_TRACE_NATIVE=1
set JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,address=8002,server=y,suspend=n %JAVA_TOOL_OPTIONS%
set JAVA_HOME_64=c:\Java\64\jdk1.8
set JAVA_HOME=%JAVA_HOME_64%
set JDK_JRE_HOME=%JAVA_HOME%\jre
set JRE_HOME=%JDK_JRE_HOME%
set ONLINE_JNLP_URL=http://pont/dms/InstallDMS_debug.jnlp
"%JRE_HOME%\bin\javaws" %ONLINE_JNLP_URL%
endlocal
Кроме того, я хотел бы отметить, что для удаленной отладки Java-приложений Java необходимо запустить JDK JRE, но не публичную JRE, иначе вы можете заметить, что JVM завершает работу перед выполнением основного класса.