2011-10-06 185 views
-1

我有一個應該調整圖像大小的程序。當我單獨運行它(來自JUnit的調用)時,它工作正常。但是,當我把它從一個小服務程序(實際上在新澤西州一個JUnit)內,它會引發以下異常:SeekableStream是否線程安全?

SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container 
java.lang.NoClassDefFoundError: com/sun/media/jai/codec/SeekableStream 

的異常點到線

SeekableStream seekableImageStream = SeekableStream.wrapInputStream(inputstream, true); 

沒有人有任何解決?

澄清一些反應以下,然後:

當我調用類從JUnit的如下原理: ResizeMyImage.smallImage(imageFilepath,thumbnailWidth);

但是當我如下調用它,然後我得到的錯誤:

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(url); 
httppost.setEntity(entity); 
HttpResponse response = httpclient.execute(httppost); 

如果我從更大的程序刪除調用ResizeMyImage的DefaultHttpClient ...工程,以及。謝謝。

迴應如下:我如何驗證GlassFish是否使用不同的JDK?

+0

JAI是否在您的webapp/servlet容器的類路徑中? – nos

+0

我爲webapp的包創建了ResizeMyImage類。我正在使用netbeans。進口工作正常:建立和部署。當我單獨運行該類作爲本地應用程序時,它運行良好。當我將它作爲更大的軟件包的一部分運行並使用DefaultHttpClient時,它僅打印錯誤。有沒有額外的方式將jar添加到webapp容器的類路徑中?你能說明一下嗎? – tribal

+1

所有這一切意味着正確的庫在開發過程中被引用,但不是在運行期間從servlet容器引用您應該將3.party jar放在您的webapp的WEB-INF/lib /文件夾中 - 但是我對於如何配置netbeans將它整齊地打包給你不夠熟悉。 – nos

回答

0

如果您有來自兩個不同線程的對象的引用,則只需要擔心對象是線程安全的。如果它不是線程安全的,當兩個不同的線程同時嘗試使用這個對象時會遇到問題。

正如其他人指出的NoClassDefFoundError意味着java無法找到您在代碼中引用的類。

編輯

JAI太臭做一些事情。像sanselan這樣的庫可能對您更好。