Javaでjnlpファイルが”java.io.IOException: Server returned HTTP response code: 501″により開けなくなった場合の対処

この記事では、java.io.IOException: Server returned HTTP response code: 501により、jnlpファイルが開けなくなった場合の対処の一例が分かります。※ただし、筆者はJavaどころかプログラミング言語に全般に精通していないため、ご了承ください。
 
jnlpファイルを実行しHTTPアクセスしようとした際に、
1回目は接続できましたが、2回目以降はアプリケーションエラーとなり接続できなくなってしまいました。
原因は理解しきれていませんが、開けるようになったため備忘として残しておきます。

java.io.IOException: Server returned HTTP response code: 501

原因


サーバー側がクライアントのリクエストメソッドを理解できない


ググって出てくるのがエラー501は上記が原因とのこと。

 

しかし、1回目は開けているのでリクエストのメソッド自体は理解できているはず。。

試しに別のクライアントから接続してみると、2回目以降も問題なく接続できていることから、クライアント側の問題であると一旦切り分け。

Javaのアプリケーションエラーの詳細を見ていると、どうやらキャッシュが影響している気がする。

シャチ
「前回アクセスした情報が見つからないよ!」と言われている気がしますが、予想です。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でファイルが”java.io.IOException: Server returned HTTP response code: 501″により開けなくなった場合の対処

Javaの知識がほぼ皆無のため、理解として合っているかは不明ですが、

今回の事象としてはキャッシュとして保持していたため、新しい接続の際にその情報を参照してしまい接続エラーとなっていたようです。

※セッション情報などがキャッシュされていたのだろうか…?

 

推測でしかないため、お詳しい方おりましたら、X(旧Twitter)コメントをお待ちしております。

同じ事象で困った方がいれば、一旦Javaのキャッシュ削除を試してみてください。

最後まで読んでいただきありがとうございました。

>
CTR IMG