我有一个应该调整图像大小的程序。当我单独运行它(从JUnit调用)时,它工作正常。但是当我从一个servlet(实际上是JUnit中的Jersey)中调用它时,它会引发以下异常:
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 :(得分:0)
如果您从两个不同的线程引用了该对象,则只需担心对象是线程安全的。如果它不是线程安全的,当两个不同的线程同时尝试使用该对象时,你会遇到问题。
正如其他人指出NoClassDefFoundError意味着java无法找到您在代码中引用的类。
修改强>
JAI发痒做某些事情。像sanselan这样的库可能会更适合您。