Java 7 предотвращает передачу по FTP в Windows Vista и 7, если включен брандмауэр. Есть идеи? - PullRequest
76 голосов
/ 09 августа 2011

Java 7 запрещает передачу по FTP в Windows Vista и 7.

В FTP перед передачей файла необходимо отправить команду PORT или PASV.Как только одна из команд отправлена, брандмауэр Windows закрывает сокет, который ее отправил.Это происходит только в том случае, если брандмауэр включен и исключение для java.exe отсутствует.Я подозреваю, что эта проблема связана с Java 7 с использованием нового стека IP-адресов Vista.

У кого-нибудь есть идеи, как исправить или обойти эту проблему?Мы распространяем библиотеку Java FTP, поэтому мы, очевидно, не можем сами добавлять исключения.

Исключение:

java.net.SocketException: Permission denied: recv failed

Информация о версии JRE:

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

ПОСЛЕДУЮЩАЯ ДЕЯТЕЛЬНОСТЬ 1 (14 ноября 2011 г.): Oracle проанализировала проблему и обнаружила, что она является ошибкой в ​​брандмауэре Windows и / или в стеке IPv6.Им удалось воспроизвести проблему с собственным приложением C (т.е. не Java), так что это убедительное доказательство того, что ошибка не в Java.Они проинформировали Microsoft, поэтому мяч сейчас на их площадке.Более подробную информацию можно найти по адресу http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

ПОСЛЕДУЮЩИЕ 2 (27 июля 2012 г.): (очень полезный) контакт в Oracle сообщил мне, что проблема сейчас обострилась по адресуMicrosoft.Мы надеемся увидеть некоторые результаты в ближайшее время.

FOLLOW-UP 3 (15 августа 2012 г.): Наш сотрудник Oracle сообщил нам, что Microsoft приняла ошибку и находится в процессе.приоритетов.

ПОСЛЕДУЮЩИЕ 4 (21 сентября 2012 г.): Microsoft выпустила исправление, которое в настоящее время тестируется Oracle.Нет информации о дате релиза.

ПОСЛЕДУЮЩИЙ 5 (11 октября 2012 г.): Успех наконец!Microsoft публично выпустила исправление .Они подразумевают, что это исправление будет включено в общее обновление программного обеспечения в будущем:

", если эта проблема не оказывает на вас серьезного влияния, мы рекомендуем дождаться следующего обновления программного обеспечения, содержащего этоИсправление. "

Ответы [ 9 ]

88 голосов
/ 05 октября 2011

Проблема вызвана сохраняющим состояние фильтром FTP брандмауэра.В качестве обходного пути вы можете отключить его, выполнив netsh advfirewall set global StatefulFTP disable с правами администратора.

15 голосов
/ 25 ноября 2011

Другой обходной путь - запустить JVM с помощью:

-Djava.net.preferIPv4Stack=true
15 голосов
/ 24 августа 2011

Я отправил отчет об ошибках в Oracle, см. bugs.sun.com / bugdatabase / view_bug.do? Bug_id = 7077696

Они отметили приоритет как низкий,что заставляет меня думать, что они не совсем понимают масштаб проблемы, то есть, что FTP не работает в Java / Windows.Я забыл указать это в отчете об ошибке.Если кто-то еще считает, что он должен иметь более высокий приоритет, добавьте комментарий к отчету об ошибках Oracle.

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

14 голосов
/ 01 ноября 2012

Мы протестировали исправление Windows http://support.microsoft.com/kb/2754804 и подтвердили, что оно действительно решило проблему.

5 голосов
/ 14 ноября 2011

Эта проблема может быть продемонстрирована без JDK7, это брандмауэр в Windows 7, блокирующий протокол ftp, когда приложение использует IPv6-сопоставленные адреса IPv4.См. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696 для более подробной информации и обходных путей.

2 голосов
/ 10 декабря 2012

На самом деле TFTP под JDK7 в Windows 7 также имеет ту же проблему, исправление MS действительно решает проблему FTP, но все еще не работает для TFTP. Похоже, Oracle должен сообщить об этой проблеме MS и получить другое исправление для решения проблемы TFTP.

2 голосов
/ 12 сентября 2011

Блог о проблеме здесь: http://podzemski.com/2011/09/12/java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/

Возможно, это вызовет дополнительное осознание проблемы.

1 голос
/ 03 сентября 2011

Об этой же ошибке сообщалось здесь с тестовым примером: Java 7 Socket Exception Bug forum.Это проблема с Java 7

0 голосов
/ 16 марта 2017

У меня была такая же проблема при использовании IDE Eclipse Neon, JAVA 7 и Windows 7 Professional.Попытка загрузить файл PDF на FTP-сервер.Я решил это, выполнив следующую команду в CMD от имени администратора:

C: \ Users \ pc01> netsh advfirewall set global StatefulFTP disable
...