2009-12-15 59 views
28

我有一個Java程序 當我編譯它,我收到以下錯誤進口的com.sun.image.codec.jpeg。*

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

我能做些什麼?

現在不推薦使用com.sun軟件包,編寫映像文件的正確方法是什麼?

回答

26

爲什麼在包com.sun.image.codec.jpeg中使用類?你不應該直接使用這些類:Why Developers Should Not Write Programs That Call 'sun' Packages

你的程序做了什麼?它只是試圖讀取或寫入JPG圖像?這對於ImageIO API非常簡單。請參閱本教程:Writing/Saving an Image

加法 - 如Java SE 7 and JDK 7 Compatibility Guide中所述,已在Java 7中刪除了包com.sun.image.codec.jpeg

梗概:非標準com.sun.image.codec.jpeg包被退役

描述:在JDK 1.2(1998十二月)溶液中加入的com.sun.image.codec.jpeg包作爲控制加載和保存的一個非標準的方式的JPEG格式圖像文件。這個軟件包從來不是平臺規範的一部分,它已從Java SE 7版本中刪除。 Java Image I/O API作爲標準API添加到JDK 1.4發行版中,並且無需使用com.sun.image.codec.jpeg軟件包。

+0

是的,不幸的是,使用ImageIO讀取JPEG會慢得多 – 2012-04-03 12:13:29

+9

ImageIO不適用於CMYK-JPEG。 – AvrDragon 2012-06-11 17:10:37

+8

如果您正在編譯自己的代碼,這只是一個選項。這並非總是如此。沒有人想要去重新編寫一個程序來編譯它。正確的答案是@mainzelM(寫作時下方)。 – mjaggard 2012-11-21 13:47:29

1

您使用的是哪個JDK?我認爲這個軟件包不是必需的,只會在Sun的JDK中提供。 This discussion解釋。

如果您真的想使用它,您可以下載jar文件並將其包含在您的路徑文件中。

根據docs

注意在的com.sun.image.codec.jpeg包中的類都沒有核心的Java API的一部分。它們是Sun JDK和JRE發行版的一部分。雖然其他許可證持有者可能選擇分發這些類,但開發人員不能依賴於非Sun實施中的可用性。我們期望等效功能最終將在覈心API或標準擴展中提供。

1

看起來像你正在使用已被替換的東西。也許你在使用Java 7?

Here似乎是描述這一點,以及在哪裏可以找到適當的替代品。

49

我在使用JDK 7編譯時遇到了這個問題。足夠奇怪的Eclipse沒有顯示這個錯誤,只有javac做了。答案可以找到in this Stackoverflow answer:javac使用一個不包含所有Sun專有類的特殊符號表,並且提供-XDignore.symbol.file使問題消失。

當然,更好的解決方案是在不使用專有類的情況下重寫代碼,但爲了快速支持JDK 7,此選項有效。

+6

使用Maven:使用maven-compiler-plugin的版本3.1,然後使用 -XDignore.symbol.file< compilerArgs> – ATorras 2014-09-22 17:42:03

+0

您可以像使用' -XDignore.symbol.file'一樣成功,而無需升級maven-compiler-plugin – Dzmitry 2015-07-06 11:18:11

+0

@mainze如何通過命令提示符添加它?我需要將它應用於我在linux下部署在tomcat中的web應用程序。 – 2015-07-10 11:41:58