java.io.IOException: Server returned HTTP response code: 501
原因
サーバー側がクライアントのリクエストメソッドを理解できない
ググって出てくるのがエラー501は上記が原因とのこと。
しかし、1回目は開けているのでリクエストのメソッド自体は理解できているはず。。
試しに別のクライアントから接続してみると、2回目以降も問題なく接続できていることから、クライアント側の問題であると一旦切り分け。
Javaのアプリケーションエラーの詳細を見ていると、どうやらキャッシュが影響している気がする。
javaws -viewerコマンドからJavaのキャッシュを削除
一時的な対処
javaws -viewerコマンドでJavaのキャッシュビューアを開き、Javaのキャッシュを削除。
恒久的な対処
Javaの設定を開きキャッシュとして情報を保存しないように設定。
対処としては上記のとおりです。
手順[一時的な対処]
コマンドプロンプトで以下コマンドを実行し、Javaのキャッシュビューアを開きます。
javaws -viewer
すると、Javaのアプリケーションを閉じたはずが、キャッシュとして情報が残っています。
※ChromeやEdgeのキャッシュを削除しても意味がありません。
このキャッシュを選択し、「×」で削除した後、再度jnlpファイルを開くと正常に表示されました。
しかし、再びキャッシュに残り2回目以降は同じ症状で開くことができません。。
キャッシュの削除を日常的な運用とするにしては面倒すぎるため、Javaの設定を変更し恒久的にキャッシュとして情報を保存しないように設定します。
手順[恒久的な手順]
1.Javaのコントロール・パネルを開く。
2.[基本]> 「インターネット一時ファイル」 > [設定]をクリック。
3.「コンピュータに一時ファイルを保持します」のチェックを外す。
4.[適用]をクリックして設定を反映。
これで2回目以降もファイルを開けるようになります。
まとめ:Javaでファイルが”java.io.IOException: Server returned HTTP response code: 501″により開けなくなった場合の対処
Javaの知識がほぼ皆無のため、理解として合っているかは不明ですが、
今回の事象としてはキャッシュとして保持していたため、新しい接続の際にその情報を参照してしまい接続エラーとなっていたようです。
※セッション情報などがキャッシュされていたのだろうか…?
推測でしかないため、お詳しい方おりましたら、X(旧Twitter)コメントをお待ちしております。
同じ事象で困った方がいれば、一旦Javaのキャッシュ削除を試してみてください。
最後まで読んでいただきありがとうございました。