Javaプログラムをコンパイルすると、次のエラーが表示されます
[javac] ...\MyClass.Java:33: package com.Sun.image.codec.jpeg does not exist
[javac] import com.Sun.image.codec.jpeg.*;
[javac] ^
私に何ができる ?
Com.Sunパッケージが非推奨になった今、イメージファイルを書き込む正しい方法は何ですか。
パッケージ内のクラスを使用する理由com.Sun.image.codec.jpeg
?これらのクラスを直接使用することは想定されていません: 開発者が「Sun」パッケージを呼び出すプログラムを作成しない理由 。
あなたのプログラムは何をしますか? JPGイメージの読み取りまたは書き込みを試行するだけですか? ImageIO
APIを使用すると、非常に簡単です。このチュートリアルを参照してください: Writing/Saving an Image 。
追加-パッケージcom.Sun.image.codec.jpeg
は、Java 7で Java SE 7およびJDK 7互換性ガイドで説明されているように削除されました )。
形式:非標準の
com.Sun.image.codec.jpeg
パッケージは廃止されました説明:
com.Sun.image.codec.jpeg
パッケージは、JPEG形式の画像ファイルの読み込みと保存を制御する非標準的な方法として、JDK 1.2(1998年12月)に追加されました。このパッケージはプラットフォーム仕様の一部ではなく、Java SE 7リリースから削除されました。Java Image I/O APIが標準APIとしてのJDK 1.4リリースにより、com.Sun.image.codec.jpeg
パッケージ。
JDK 7でコンパイルするときにこの問題が発生しました。奇妙なほどのEclipseはこのエラーを表示せず、javacだけが表示しました。答えは見つけることができます このStackoverflowの答え :javacは、Sunが所有するすべてのクラスを含まない特別なシンボルテーブルを使用し、-XDignore.symbol.file
は問題を解決します。
もちろん、独自のクラスを使用せずにコードを書き換えることがはるかに優れたソリューションですが、JDK 7を迅速にサポートするには、このオプションが機能します。
一般に、「Sun。」または「com.Sun。」パッケージのクラスは使用しないでください。このパッケージは実装の詳細と見なされ、 Java APIの一部ではありません。
下位互換性の保証がないため、Javaの新しいバージョンに移行するときに問題を引き起こす可能性があります。同様に、別のJava 、OpenJDKなど。
そのようなクラスは、ほとんどの場合、代わりに使用する必要があるJava APIクラスによってラップされます。
参照: https://sonarcloud.io/organizations/default/rules?languages=Java&open=squid%3AS1191&q=Sun
交換されたものを使用しているようです。 Java 7?
ここ は、これを説明しているように見えるものであり、適切な代替品を見つけるためにどこに行くかです。