Вы можете сделать это, обработав результат из своей записи:
result = ['1', None, 's', '1']
for idx, item in enumerate(result):
try:
result[idx] = int(item)
except:
if item == 'None':
result[idx] = None
>>> result
[1, None, 's', 1]
Спасибо за хорошее краткое объяснение, PHeath! Следуя вашим советам, я обнаружил, что лучший способ решить эту проблему - просто использовать CATALINA_OPTS вместо JAVA_OPTS .
Глядя на catalina.sh, можно увидеть, что CATALINA_OPTS используется только командами «start» и «start-security», тогда как JAVA_OPTS также используется командой «stop» (по крайней мере, с Tomcat 6.0.33 в openSUSE 12.1).
По крайней мере, если у вас установлен Tomcat в Linux с помощью менеджера пакетов, то изменение переменной CATALINA_OPTS в /etc/tomcat6/tomcat6.conf (или любом другом пути в вашем дистрибутиве) будет более чистым, чем изменение сценария catalina.sh напрямую, диспетчер пакетов предполагает, что пользователь изменяет только файлы конфигурации, и нарушение этого предположения может вызвать проблемы при обновлении пакетов Tomcat (например, потеря настроек из-за перезаписи файла catalina.sh).
Я думаю, что предпочтение CATALINA_OPTS следует отдавать JAVA_OPTS не только для JDWP, но и для многих других вариантов: e. г. если использовать опцию размера кучи -Xmx ... тогда было бы разумно поместить ее в CATALINA_OPTS, так как команде "stop" не нужно много кучи.
Проблема в том, что ваш кот все еще работает на отладочном порту (5005) или какой-либо другой службе, работающей на том же порту (5005).
Если tomcat все еще работает, вы можете убить его
Теперь вы сможете запускать сервер в режиме отладки без каких-либо проблем.
Это может произойти при отладке юнит-теста через инструмент (eclipse), который был выполнен через maven. Для этого вы можете использовать тот же процесс.
Сначала закройте Eclipse, а также убейте процесс Java и запустите его снова.
Похоже, порт 5005 уже используется. Проверьте открытые порты командой netstat .
Это может быть связано с тем, что вы уже открыли tomcat. Проверьте свои процессы.
Вы пытаетесь отладить tomcat при запуске, поэтому он привязывается к порту 5005 при запуске jvm.
Когда вы запускаете catalina.sh stop
, он запускается другой jvm, который также пытается привязаться к порту 5005.
Вам нужно переместить аргументы отладки в аргументы запуска и запуска (в catalina.sh
) tomcat, поместив их прямо в JAVA_OPTS
является причиной возникшей у вас проблемы.
Похоже, вы запускаете Tomcat с включенным отладчиком. Это заставляет JVM подключаться к процессу для отладки. Однако в catalina.sh есть оператор case для запуска, остановки, перезапуска , так далее и так далее. Выполнение команды остановки по-прежнему добавляет это, поскольку оно является частью вашего глобального JAVA_OPTS и пытается запустить отладчик, прослушивающий тот же порт для команды выключения. Если вы удалите адрес = 50005 из JAVA_OPTS или воспользуетесь командами start jdpa для запуска виртуальной машины с отладчиком, это решит вашу проблему.
Посмотрите на файл catalina.sh по умолчанию в последней версии Tomcat, если вам нужна чистая копия . Похоже, кто-то внес изменения в ваш, которые являются недопустимыми и вызывают запуск JDPA при запуске, остановке, любой выданной команде.