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 г.): A (очень полезный) контакт в Oracle сказал мне, что проблема теперь переросла в Microsoft. Мы надеемся вскоре увидеть некоторые результаты.
ПОСЛЕДУЮЩАЯ ДЕЯТЕЛЬНОСТЬ 3 (15 августа 2012 г.): Наш контакт в Oracle сказал нам, что Microsoft приняла ошибку и находится в процессе определения приоритетов.
ПОСЛЕДУЮЩАЯ ДЕЯТЕЛЬНОСТЬ 4 (21 сентября 2012 г.): Microsoft выпустила патч, который в настоящее время тестируется Oracle. Нет слова о дате выпуска.
ПОСЛЕДУЮЩАЯ ДЕЯТЕЛЬНОСТЬ 5 (11 октября 2012 г.): Успех наконец! Microsoft публично выпустила исправление. Они подразумевают, что исправление будет включено в общее обновление программного обеспечения в будущем:
", если вы не сильно пострадали от этой проблемы, мы рекомендуем дождаться следующего обновления программного обеспечения, содержащего это исправление."