copy了一份别人写的生成验证码的servlet,却发现编译时不能通过,提示找不到sun.image.codec.jpeg.JPEGCodec和com.sun.image.codec.jpeg.JPEGImageEncoder。其servlet如下。最后,通过将jre lib目录下的rt.jar拷贝到工程,然后引入,得以通过。
package com.jesse.onlineshop.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class GenerateIdentifyCodeServlet extends HttpServlet {
private static final long serialVersionUID = -5083098939508150302L;
private static Random random = new Random();
private static final char[] stores = { '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
'Z' };
public String getRandonString() {
StringBuffer buff = new StringBuffer();
for (int i = 0; i < getLength(); i++) {
buff.append(stores[random.nextInt(stores.length)]);
}
return buff.toString();
}
public Color getRandomColor() {
return new Color(random.nextInt(255), random.nextInt(255),
random.nextInt(255));
}
public Color getReverseColor(Color color) {
return new Color(255 - color.getRed(), 255 - color.getGreen(),
255 - color.getBlue());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int width = 100;
int height = 30;
resp.setContentType("image/jpeg");
String randomString = getRandonString();
req.getSession(true).setAttribute("identifyCode", randomString);
Color color = getRandomColor();
Color reverse = getReverseColor(color);
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));
g.setColor(color);
g.fillRect(0, 0, width, height);
g.setColor(reverse);
g.drawString(randomString, 18, 20);
for (int i = 0, n = random.nextInt(width); i < n; i++) {
g.drawRect(random.nextInt(width), random.nextInt(height), 1, 1);
}
ServletOutputStream out = resp.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi);
out.flush();
out.close();
}
public int getLength() {
return Integer.parseInt(getInitParameter("codelength"));
}
}
分享到:
相关推荐
### 解决Eclipse导入rt包问题 #### 问题背景与分析 在进行图像处理时,开发者经常需要使用到一些特定的库来实现功能。在Java环境下,`com.sun.image.codec.jpeg.JPEGCodec` 和 `...
在Eclipse这款强大的Java开发环境中,导入已有的项目是日常开发工作中常见的操作。无论是接手他人开发的项目,还是自己在不同计算机间切换工作环境,都需要掌握这个技能。下面将详细介绍两种在Eclipse中导入已有项目...
1. 安装Eclipse Neon并导入CDT插件。 2. 配置GCC工具链,指向安装的ARM GCC编译器路径。 3. 创建新工程,选择Cortex-M3架构,指定LPC1768的启动文件。 4. 添加RT-Thread源码库到项目,包括kernel、components、...
安装这些语言包通常非常简单,只需要解压缩后导入到Eclipse的“软件更新”或“安装新软件”功能中,然后按照提示进行即可。当然,用户也可以通过百度搜索详细的安装步骤,以确保正确无误地完成汉化过程。 总的来说...
在Eclipse中,可以通过导入OpenJDK的源码来查看rt.jar中的内容。首先,需要在Eclipse的Java构建路径中添加源代码位置,指向OpenJDK的src.zip或源码目录。这样,在遇到不熟悉的方法或类时,可以直接跳转到源码,提高...
3. 将RT-Thread源码导入项目,设置源代码路径和编译配置。 ### 5. 新建调试配置 1. 在Eclipse中,右键点击项目,选择“Run As” -> “Debug Configurations”。 2. 在调试配置对话框中,创建新的GDB调试会话。 3. ...
在获取到rt.src这个源代码压缩包后,可以使用IDE(如Eclipse、IntelliJ IDEA)导入源码,便于阅读和学习。通过逐行阅读、分析源码,结合Javadoc注释,可以深入理解Java平台的核心机制。同时,也可以尝试修改源码并...
把这个生成的rt_debug.jar包复制到JDK_HOME\jre\lib\endorsed。如果没有endorsed目录,自己创建一下。注意:eclipse导入jar时,一定要up到rt.jar上边!
`rt_source_jdk1.8` 这个压缩包文件就是 JDK 1.8 版本中 `rt.jar` 的源代码,你可以通过解压并导入到IDE(如Eclipse或IntelliJ IDEA)来查看和学习。这将使你能够跟踪类的方法实现,理解内部工作机制,以及学习如何...
每个`.java`文件代表一个类或接口的源代码,可以使用IDE(如Eclipse或IntelliJ IDEA)导入这些源代码,便于阅读和查找API的实现。 `myProgram`可能是一个用户创建的项目或者程序,它可能引用了`rt.jar`中的类。通过...
当尝试导入一个项目时,可能会出现以下错误提示:“Access restriction: The type And is not accessible due to restriction on required library C:\Program Files (x86)\Java\jdk1.5.0_09\jre\lib\rt.jar”,这...
下载zip文件后,按照Eclipse插件安装方式导入,通常通过`Help > Install New Software > Add > Archive`来完成。 - **JDT**:如果你下载的Eclipse不包含JDT(Java Development Tools),则需要单独下载并手动安装。...
但是,有时引入这两个包时会报出错误:`Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:/Java/jre1.6.0_07/lib/rt.jar`。 解决方法一:修改全局属性 ...
编译和运行该项目时,你需要一个合适的开发环境,例如Linux或Windows下的Eclipse IDE,配合NXP的MCUXpresso SDK。SDK包含了必要的库文件、工具链和示例代码,用于开发和调试i.MX RT1052的应用。通过集成开发环境,你...
1. 导入Eclipse TPS的DVH数据文件,这些数据通常为文本格式,可能需要解析特定的列来获取剂量和体积信息。 2. 对数据进行清洗和预处理,去除无效或异常值。 3. 分析DVH数据,比如计算靶区的剂量覆盖情况,或者评估...
使用c标签必须要导入的包和文件,没有是不能用的哦,
LOGO,全称为“逻辑操作符号”,是一种面向初学者的编程语言,强调图形化编程和问题解决的教育理念。通过 myLOGO4Eclipse,程序员可以在熟悉的 Eclipse 环境下利用 LOGO 语言进行学习和开发。 **一、LOGO 语言基础*...
为了查看`rt.jar`中的源码,我们需要将其对应的源码文件`java-src.zip`导入到Eclipse中。 设置源码目录的过程如下: 1. 在Eclipse中,打开“项目”(Project)菜单,然后选择“属性”(Properties)。 2. 在弹出的...