2011-10-06 189 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这样的库可能对您更好。