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. Ми сподіваємось побачити якісь результати найближчим часом.
ПІДПРИЄМСТВА 3 (15 серпня 2012 р.): Наш контактний особа в Oracle повідомив нам, що Microsoft прийняла помилку і в процесі розробки пріоритетів.
ПІДПРИЄМСТВА 4 (21 вересня 2012 р.): Microsoft випустила патч, який наразі тестується Oracle. Ні слова про дату випуску.
ПОСЛІДНИК 5 (11 жовтня 2012 р.): Нарешті, успіх! Microsoft публічно випустила виправлення . Вони означають, що виправлення буде включено до загального оновлення програмного забезпечення в майбутньому:
"якщо ця проблема серйозно не постраждала, рекомендуємо дочекатися наступного оновлення програмного забезпечення, яке містить це виправлення."