我们的项目是在windows下开发的,今天把项目部署到一台Linux机器上,结果立马出错了,验证码无法显示,查看了一下异常信息,异常信息如下:
java.lang.IncompatibleClassChangeError: Found class com.sun.image.codec.jpeg.JPEGImageEncoder, but interface was expected
上网搜了一下,有的说JDK版本问题,导致无法加载JPEGImageEncoder;也有说JRE环境变量出错的。
先看第一个问题,JDK版本问题。我用java -version查看了一下,发现是SUN的JDK,不是openJDK;那会不会是环境变量的问题呢?cat /etc/profile看了一下,发现。。环境变量没设错啊!!!
再看第二个问题,JRE设置问题。我查看了一下tomcat的启动信息,果然发现了不对的地方:
using JRE : /usr
我的JRE目录不在/usr目录下啊~~~看来应该是tomcat访问的jre路径不对,导致了不能支持com.sun包下的类。
这可如何是好╮(╯_╰)╭
经过我不懈的努力,终于找到一个技术贴,有高人说startup.sh执行会去加载catalina.sh,而catalina.sh又会去加载setclasspath.sh,所以在setclasspath.sh的文件顶部,配置一下JAVA_HOME和JRE_HOME就OK了,即:
export JAVA_HOME=/usr/java/jdk6
export JRE_HOME=/usr/java/jdk6/jre
保存后运行,果然生效了,再看原先的验证码问题,已经正常解决,呼呼呼呼~~~~
PS.在查找的过程中,搜到两篇博文讲tomcat的classpath设置和catalina.sh的作用,在此记录一下:
http://blog.csdn.net/andyelvis/article/details/6719996
http://www.blogjava.net/wyz191/articles/catalina_sh.html
相关推荐
Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar 此时解决办法: Eclipse默认把这些受访问限制的API设成了ERROR。只要...
import com.sun.image.codec.jpeg.JPEGImageEncoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar 此时解决...
引入rt.jar。解决依赖 import sun.misc.BASE64Decoder; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * @author WENLIANG * * 该类主要用于将图片重绘 */ public class RedrawImage { public RedrawImage() {} /** * @param redrawImage 要重绘的图片 * @...
import com.sun.image.codec.jpeg.JPEGImageEncoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar 解决方法就...
com.sun.image.codec.jpeg.JPEGImageEncoder这个包不支持,需配置一下eclipse的环境
import com.sun.image.codec.jpeg.JPEGImageEncoder; <br>public class CreatePic { public static void gg() { try { BufferedImage bufImg = new BufferedImage(100,100,...
import com.sun.image.codec.jpeg.JPEGImageEncoder; public class CodePicServlet extends HttpServlet { protected void service (HttpServletRequest request,HttpServletResponse response)throws ...
import com.sun.image.codec.jpeg.JPEGImageEncoder; public class MyVerifyCode extends HttpServlet { private static MyVerifyCode instance; private final String ATTRIBUTE_NAME = "verifycode"; // ��...
g.drawImage(image2,image2.getWidth() image2.getWidth(),image2.getHeight() image2.getWidth(),null); OutputStream out=new FileOutputStream("合并后的图片.jpg"); System.out.println("成功!见项目更...
该JPEG图像生成器由1个java源文件...将图像对象保存成JPEG文件由JPEG编码器(JPEGImageEncoder)负责。获取计算机图像则由Robot对象负责。屏幕图像同时绘制到画布上和图像对象中,并由编码器将图像对象保存成JPEG文件。
response.setContentType("image/jpeg"); //禁止浏览器缓存 response.addHeader("pragma", "NO-cache"); response.addHeader("Cache-Control", "no-cache"); response.addDateHeader("Expries", 0); //...
首先到sun下载最新的jmf,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp 然后,说一下需求 1. 用摄像头拍照 2. 在文本框输入文件名 3. 按下拍照按钮,获取摄像头内的图像 4....
下面小编就为大家带来一篇获取JPEGImageEncoder和JPEGCode这两个类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
//将image图片压缩成JPEG ByteArrayOutputStream bos = new ByteArrayOutputStream(); JPEGImageEncoder encode = JPEGCodec.createJPEGEncoder(bos); encode.encode(image); //将bos中存储的...
通过PNGEncoder、JPEGEncoder对bitmapdata进行encode转换为对应图像格式的bytearray,这时会根据对应图像格式的压缩算法转换为编码图像的bytearray,如JPEGEncoder 类使用联合图像专家组 (JPEG) 压缩将原始的位图...
用java中的JPEGImageEncoder类的压缩实现图片格式的转换