web-dev-qa-db-ja.com

import com.Sun.image.codec.jpeg。*

Javaプログラムをコンパイルすると、次のエラーが表示されます

[javac] ...\MyClass.Java:33: package com.Sun.image.codec.jpeg does not exist
[javac] import com.Sun.image.codec.jpeg.*;
[javac] ^

私に何ができる ?

Com.Sunパッケージが非推奨になった今、イメージファイルを書き込む正しい方法は何ですか。

34
silverkid

パッケージ内のクラスを使用する理由com.Sun.image.codec.jpeg?これらのクラスを直接使用することは想定されていません: 開発者が「Sun」パッケージを呼び出すプログラムを作成しない理由

あなたのプログラムは何をしますか? JPGイメージの読み取りまたは書き込みを試行するだけですか? ImageIO AP​​Iを使用すると、非常に簡単です。このチュートリアルを参照してください: 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 パッケージ。

33
Jesper

JDK 7でコンパイルするときにこの問題が発生しました。奇妙なほどのEclipseはこのエラーを表示せず、javacだけが表示しました。答えは見つけることができます このStackoverflowの答え :javacは、Sunが所有するすべてのクラスを含まない特別なシンボルテーブルを使用し、-XDignore.symbol.fileは問題を解決します。

もちろん、独自のクラスを使用せずにコードを書き換えることがはるかに優れたソリューションですが、JDK 7を迅速にサポートするには、このオプションが機能します。

52
mainzelM

一般に、「Sun。」または「com.Sun。」パッケージのクラスは使用しないでください。このパッケージは実装の詳細と見なされ、 Java APIの一部ではありません。

下位互換性の保証がないため、Javaの新しいバージョンに移行するときに問題を引き起こす可能性があります。同様に、別のJava 、OpenJDKなど。

そのようなクラスは、ほとんどの場合、代わりに使用する必要があるJava APIクラスによってラップされます。

参照: https://sonarcloud.io/organizations/default/rules?languages=Java&open=squid%3AS1191&q=Sun

2
Diego Turiso

どのJDKを使用していますか?このパッケージは必須ではなく、SunのJDKでのみ利用できると思います。 この議論 説明。

本当に使用したい場合は、jarファイルをダウンロードして、パスファイルに個別に含めることができます。

docs によると:

Com.Sun.image.codec.jpegパッケージのクラスはコアJava APIの一部ではありません。これらはSunのJDKおよびJREディストリビューションの一部です。これらのクラスを配布するために、開発者はSun以外の実装での可用性に依存することはできません。

1

交換されたものを使用しているようです。 Java 7?

ここ は、これを説明しているように見えるものであり、適切な代替品を見つけるためにどこに行くかです。

1
Francis Upton