74

Java 7 は、Windows Vista および 7 での FTP 転送を防ぎます。

FTP では、ファイルを転送する前に PORT または PASV コマンドを送信する必要があります。コマンドの 1 つが送信されるとすぐに、Windows ファイアウォールはそれを送信したソケットを閉じます。これは、ファイアウォールが有効で、java.exe の例外がない場合にのみ発生します。この問題は、新しい Vista IP スタックを使用する Java 7 に関連していると思われます。

この問題を修正または回避する方法を知っている人はいますか? 私たちは 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 (2011 年 11 月 14 日): Oracle は問題を分析し、Windows ファイアウォールおよび/または IPv6 スタックのバグであると思われることを発見しました。彼らはネイティブ C (つまり、非 Java) アプリで問題を再現することができたので、これはバグが Java にないことの強力な証拠です。彼らはマイクロソフトに通知したので、ボールは今彼らのコートにあります. 詳細については、http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696を参照してください。

フォローアップ 2 (2012 年 7 月 27 日): Oracle の (非常に役立つ) 担当者から、この問題は現在 Microsoft にエスカレートされているとのことでした。すぐに何らかの結果が得られることを期待しています。

フォローアップ 3 (2012 年 8 月 15 日): Oracle の担当者は、Microsoft がバグを受け入れ、優先順位付けを行っていることを伝えました。

フォローアップ 4 (2012 年 9 月 21 日): Microsoft は、現在 Oracle によってテストされているパッチを作成しました。発売日については何も言われていません。

フォローアップ 5 (2012 年 10 月 11 日): ついに成功!Microsoft は修正プログラムを公開しています。彼らは、修正が将来の一般的なソフトウェア アップデートに含まれることを暗示しています。

「この問題による深刻な影響を受けていない場合は、このホットフィックスを含む次のソフトウェア アップデートを待つことをお勧めします。」

4

9 に答える 9

88

この問題は、ファイアウォールのステートフルFTPフィルターが原因で発生します。netsh advfirewall set global StatefulFTP disable回避策として、管理者権限で実行することで無効にすることができます。

于 2011-10-05T07:16:33.687 に答える
15

もう 1 つの回避策は、次のように JVM を起動することです。

-Djava.net.preferIPv4Stack=true
于 2011-11-25T02:05:39.303 に答える
14

Oracle にバグ レポートを送信しました。bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696を参照してください。

彼らは優先度を低く設定しているので、Java/Windows で FTP が壊れているという問題の重大さをよく理解していないように思います。バグレポートに明示的に記載するのを忘れていました。優先度を高くすべきだと他の人が感じた場合は、Oracle のバグ レポートにコメントを追加してください。

バグに「投票」することもできることに気付きました。重要であることに同意する場合は、投票してください。

于 2011-08-24T04:46:48.267 に答える
14

Windows ホットフィックスhttp://support.microsoft.com/kb/2754804をテストし、問題が解決したことを確認しました。

于 2012-11-01T15:41:02.300 に答える
5

この問題は、JDK7 がなくても発生する可能性があります。これは、アプリケーションが IPv6 にマップされた IPv4 アドレスを使用しているときに、Windows 7 のファイアウォールが ftp プロトコルをブロックしているためです。詳細と回避策については、 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696を参照してください。

于 2011-11-14T10:11:35.263 に答える
2

実際、Windows 7 の JDK7 での TFTP にも同じ問題があります。MS ホットフィックスは FTP の問題を解決しますが、それでも TFTP では機能しません。Oracle は同じ問題を MS に報告し、TFTP の問題を解決する別のホットフィックスを取得する必要があるようです。

于 2012-12-10T07:47:58.847 に答える
2

この問題についてのブログ: http://podzemski.com/2011/09/12/java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/

多分それは問題のいくつかの追加の認識を引き起こすでしょう.

于 2011-09-12T14:52:19.117 に答える
1

Java 7 Socket Exception Bugフォーラムのテスト ケースで同じバグが報告されました 。Java 7の問題です

于 2011-09-02T20:09:29.017 に答える