在学习日记源代码中:/learndiary/old/web/WEB-INF/ 目录下边有一个目录名叫classes,是程序运行时的class文件,本来不应该进入cvs仓库的。我也在WEB-INF的目录下面加了一个.cvsignore文件,里面过滤了classes目录的提交(即.cvsignore文件里面加了一行为“classes”)。这个.cvsignore在原来在eclipse2.1下一直工作得很好,本地与cvs库同步时也不会把这个classes的目录包括进去。
但是,当我在redhat linux9.0 下使用eclipse3.1时,问题出现了,在进行cvs同步时把classes目录下的所有文件都包括进去了。我也不知道是eclipse3.1和原因还是redhat linux9.0的原因。现在只有把问题摆在这里,然后就是手工取消这个classes目录的同步。
有哪位朋友知道答案的话希望能回复一下。谢谢。
标签:JSP
JSP程序员成长之路(转帖)
转自:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=56589&start=0&msRange=30
JSP程序员成长之路
striveforever 转贴 (参与分:31014,专家分:1668) 发表:2006-10-11 08:27 版本:1.0 阅读:204次
一:说明
在本文章中使用精通、熟练、熟悉、了解标志你对某技术的掌握程度。
精通:能够掌握此技术的85%技术要点以上,使用此技术时间超过两年,并使用此技术成功实施5个以上的项目。能使用此技术优化性能或代码,做到最大可能的重用。
熟练:能够掌握此技术的60%技术要点以上,使用此技术时间超过一年,并使用此技术成功实施3个以上的项目。能使用此技术实现软件需求并有经验的积累在实现之前能做优化设计尽可能的实现模块或代码的重用。
熟悉:能够掌握此技术的50%技术要点以上,使用此技术时间超过半年上,并使用此技术成功实施1个以上的项目。能使用此技术实现软件需求。
了解:可以在实际需要时参考技术文档或帮助文件满足你的需要,基本知道此项技术在你运用是所起的作用,能够调用或者使用其根据规定提供给你的调用方式。
二:基本要求
1:html掌握程度:熟练。原因:不会html你可能写JSP?
2:javascript/jscript:掌握程度:熟悉。原因:client端的数据校验、一些页面处理需要你使用脚本。
3:css掌握程度:熟悉。原因:实现页面风格的统一通常会使用css去实现。
4:java基础编程掌握程度:熟练。原因:不会java你能写JSP?开玩笑吧。
还有你必须非常熟悉以下几个包java.lang;java.io;java.sql;java.util;java.text;javax.sevrlet;javax.servlet.http;javax.mail;等。
5:sql掌握程度:熟练。原因:如果你不使用数据库的话你也许不需要掌握sql。
同时你必须对以下几种数据库中的一种以上的sql比较熟悉。Oracle,DB2,Mysql,Postgresql.
6:xml掌握程度:了解原因:AppServer的配置一般是使用XML来实现的。
7:ejb掌握程度:了解原因:很多项目中商业逻辑是由ejb来实现的,所以呢……
8:以下几种AppServer(engnier)你需要了解一个以上。
a:)Tomcat
b:)WebLogic
c:)WebSphere
d:)JRun
e:)Resin
原因:你的jsp跑在什么上面啊!
三:选择要求(因项目而定)
1:LDAP掌握程度:了解原因:LADP越来越多的运用在权限控制上面。
2:Struts掌握程度:熟练原因:如果符合MVC设计通常会使用Struts实现C。
3:Xsp掌握程度:根据需要而定很多时候是不使用的,但在不需要使用ejb但jsp+servlet+bean实现不了的时候Xsp是一个非常不错的选择。
4:Linux掌握程度:熟悉原因:如果你的运用跑在Linux/Unix上你最少要知道rm,mv,cp,vi,targzip/gunzip是用来做什么的吧。
四:工具的使用
1:UltraEdit(EditPlus)+jakarta-ant+jakarta-log4j;
2:Jubilder4-6
3:VisualAgeForJava
4:VCafe
以上的工具你选择你自己熟悉的吧。不过强烈建议你用log4j做调试工具。
五:成长之路
1:html学习时间,如果你的智商在80以上,15天时间应该够用了。至少你能手写出一个页面来。
2:jacascript/jscript学习时间,这真的不好说,比较深奥的东西,够用的话一个礼拜可以学写皮毛。
3:css学习时间,三天的时间你应该知道如何使用css了,不要求你写,一般是美工来写css。
4:java学习时间,天才也的三个月吧。慢满学吧。如果要精通,那我不知道需要多少时间了。用来写jsp,四个月应该够了。
5:sql学习时间,只需要知道insert,delete,update,select,create/drop table的话一天你应该知道了。
6:xml学习时间,我不知道我还没有学会呢。呵呵。不过我知道DTD是用来做什么的。
7:ejb学习时间,基本的调用看3天你会调用了。不过是建立在你学会java的基础上的。
8:熟悉AppServer,Tomcat四天你可以掌握安装,配置。把jsp跑起来了。如果是WebLogic也够了,但要使用ejb那不关你的事情吧。SA做什么去了。
9:熟悉Linux那可得需要不少时间。慢慢看man吧。
10:Struts如果需要你再学习。
版权声明
本篇文章对您是否有帮助? 投票: 是 否 投票结果: 3 0
作者其它文章:
* 如何用正确的方法写出高质量软件的75条体会
* 敏捷开发的七种武器
* 职场:迈过职业生涯中的5个坎
作者全部文章
评论人:sonyejin 参与分: 12927 专家分: 436 发表时间: 2006-10-11 20:26
6:xml学习时间,我不知道我还没有学会呢。呵呵。...
我晕,作者说了这么多,竟然连xml都不会。。
评论人:happylinyang 参与分: 2673 专家分: 30 发表时间: 2006-10-11 22:13
不错,不错,[good]
评论人:batbat 参与分: 6635 专家分: 440 发表时间: 2006-10-12 21:00
xml有各种开源的工具包可以用,像jdom什么的,还有征对某个特殊应用的包,比如说:rome可以用于rss、atom之类的生成、聚合操作。java就是好,只要你想用的,基本上都有开源的类库供选择。给了像我之类只想搞点简单应用的人很大方便。[good]
分享JAVA学习目标,做成功JAVA程序员。JAVA学习日记
同意这个说法;先把基础砸扎实;
参见JSP基础
http://www.bc-cn.net/Article/web/jsp/jc/200410/158.html
JSP和JavaScirpt数据交互(转)
(转自:http://www.java3z.com/cwbwebhome/article/article5/5585.jsp?id=912)
JSP和JavaScirpt数据交互 点击观看演示
下载源代码
〖 作者:不详 〗〖 大小:2k 〗〖 发布日期:2006-05-31 〗〖 浏览:118 〗
对于WEB程序来说,前端(JavaScript)和后端(JSP/Servlet)是没法共用数据的,只能是后端程序(JSP)把数据输出,生成页面到前端,这时候生成的页面中的JavaScript代码才有可能得到所谓jsp的数据。同样的,只有把JavaScript里的数据提交给后端JSP代码,JSP程序中才能得到JavaScript的数据。
那如何实现在页面的JavaScript中使用jsp中的数据或是在jsp中使用页面的JavaScript数据呢?
一、页面中的JavaScript的数据如何提交给后台的jsp程序
① 可以将JavaScript的数据以xxx.JSP?var1=aaa&var2=bbb的形式作为URL的参数传给JSP程序,此时在jsp中用
<%String strVar1=request.getParameter("var1");%>就可以获取到JavaScript脚本传递过来的数据;
② 使用JavaScript通过在表单里加入隐藏域信息,然后用表单提交的方式把数据传递给JSP程序。
二、页面中的JavaScript的数据如何使用后台的JSP程序的数据
这个比较简单,直接在JavaScript脚本中用<%=strVar1%>就可以把jsp程序中的数据传递给JavaScript脚本使用了。
三、参考下面例子:
1、test.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<%
String s1="Hello ";
String s2="World!!";
%>
<script language="JavaScript">
<!--
/***************************************************************
* JavaScript脚本,放置在页面中的任何位置都可以
* insertclick()函数获取JSP传递到页面中的变量s1,
* 然后就可以在JavaScript中修改这个变量的值,再通过
* post的方式提交给JSP程序来使用。
***************************************************************/
function insertclick(){
var1 ="<%=s1 %>";
document.forms["insertForm"].mc.value = var1 + document.forms["insertForm"].mc.value ;
document.insertForm.submit();
}
//-->
</script>
<!-- html页面form表单,放置在html页面中的位置不限 -->
<form name="insertForm" method="post" action="get.jsp">
<!-- 下面这一句是获取JSP程序中传递过来的变量值 -->
<input type="hidden" name="mc" value="<%=s2 %>">
<input type="button" value="提交" onclick="insertclick()">
</form>
2、get.jsp
<%
String strVar1=request.getParameter("mc");
out.print(strVar1);
%>
jsp上传文件;jsp上传含中文名的文件(转帖)
转自:http://www.linuxsir.org/bbs/archive/index.php/t-167492.html
LinuxSir.Org > 编程开发讨论区 —— LinuxSir.Org > Java 程序设计开发讨论 > 我想用jsp上传含中文名的文件,该怎么办??
--------------------------------------------------------------------------------
PDA查看完整版本 : 我想用jsp上传含中文名的文件,该怎么办??
--------------------------------------------------------------------------------
pilchard04-12-30, 11:24
上传到服务器以后中文显示不出来?
--------------------------------------------------------------------------------
eTony04-12-30, 11:42
我用的 o'reilly 的上传组件 没有问题
--------------------------------------------------------------------------------
nscwf04-12-30, 12:06
我有个办法,把文件名用POST记下来,上传之后,再更名回来
--------------------------------------------------------------------------------
hantsy04-12-30, 13:42
我用struts上传没有问题,
--------------------------------------------------------------------------------
fangshun05-01-06, 08:47
上传的字节流转换String时需要转码!!!
--------------------------------------------------------------------------------
fangshun05-01-06, 08:53
/**
* 文件上传进行代理服务,阻止不符合上传规范的文件进入。
* 使用单实例创建,外部调用只有通过工厂方法才可以创建唯一的代理实例。
* @author fangshun
* @see FileUploadFactroy
*/
public class FileUploadProxy implements FileUpload {
/**
* 外部调用只有通过工厂方法才可以创建唯一的代理实例。
*/
protected FileUploadProxy() {}
/**
* 上传方法<tt>upload</tt>的代理验证,阻止不符合规范的上传方式,
* 实现接口的方法。
* @param request 需要得到从上传页面传来的request对象。
*
* @param pathName 服务器存放上传文件的绝对路径,
* 这可能来自你自己的指定,或者来自你要解析的某个已经配置好的配置文件
* 例如WEB-INF下的某个目录的xml配置文件
*
* @param sizeMax 需要上传的文件总体的容量,这里使用long类型,以满足
* 能支持大容量的文件上传,请注意:上传参数sizeMax的最小单位为'K'
*
* @throws Exception
* @see FileUpload
*/
public void upload(HttpServletRequest request, String pathName, long sizeMax)
throws Exception {
// TODO Auto-generated method stub
if ((request == null) || (pathName == null)) {
throw new NullPointerException("parameter");
}
if (sizeMax < 0) {
throw new FileSizeException("File Require Size ");
} else {
//从request中获取上下文内容尺度
int requestSize = request.getContentLength();
//为传来的最大容量乘以1024,获得符合以'K'为单位的尺度
long sizeMax_K = sizeMax << 10;
//String pathNameCN = new String(pathName.getBytes("utf-8"), "gb2312");
//如果传来的尺度大于上传的最大限度
if (requestSize > sizeMax_K) {
throw new SizeLimitExceededException(
"the request was rejected because " +
"it's size exceeds allowed range");
}
String contentType = request.getContentType();
//如果传来的条件符合代理类的要求,执行上传操作!!!
JetStepFileUpload upload = JetStepFileUpload.getInstance();
upload.processUpload(request, pathName, sizeMax_K);
}
}
/**
* 上传实现细节
* 内隐类实现
* @author fangshun
*/
private static class JetStepFileUpload {
private static JetStepFileUpload upload;
/**
* 外界对象不能进行实例化,私有创建对象。
*/
private JetStepFileUpload() { }
private static JetStepFileUpload getInstance() {
if(upload == null) {
upload = new JetStepFileUpload();
}
return upload;
}
/**
* 上传实现
* @param request 需要得到从上传页面传来的request对象。
*
* @param pathName 服务器存放上传文件的绝对路径,
* 这可能来自你自己的指定,或者来自你要解析的某个已经配置好的配置文件
* 例如WEB-INF下的某个目录的xml配置文件
*
* @param sizeMax 需要上传的文件总体的容量,这里使用long类型,以满足
* 能支持大容量的文件上传,参数sizeMax的最小单位为'K'
* @throws Exception
*/
private void processUpload(HttpServletRequest request, String filePath, long sizeMax)
throws Exception {
DiskFileUpload fu = new DiskFileUpload();
String encoding = request.getCharacterEncoding();
fu.setHeaderEncoding(encoding);
// If file size exceeds, a FileUploadException will be thrown
fu.setSizeMax(sizeMax);
List fileItems = fu.parseRequest(request);
Iterator itr = fileItems.iterator();
while (itr.hasNext()) {
FileItem fi = (FileItem) itr.next();
String fileName = fi.getName();
if(fileName == null || fileName.equals("")) {
continue;
}
System.out.println("no convert" + fileName);
//fileName = new String(fileName.getBytes(), "utf-8");
// fileName = new String(fileName.getBytes(), "gb2312");
System.out.println("fileName" + fileName);
//Check if not form field so as to only handle the file inputs
//else condition handles the submit button input
if (!fi.isFormField()) {
File file = new File(fileName);
File fNew = new File(filePath, file.getName());
fi.write(fNew);
} else {
System.out.println("Field =" + fi.getFieldName());
}
}
}
}
}
--------------------------------------------------------------------------------
L0veyou05-01-07, 20:36
这是一个用Bean的文件上传JSP,可以识别各种编码.
uploadfile.jsp:
<%@ page language="java"%>
<%@ page contentType="text/HTML;charset=GB2312"%>
<jsp:useBean id="fub" scope="page" class="mybean.FileUploadBean" />
<%
String Dir = "D:\\WWW\\testing\\test"; //保存文件的路径,请确保目录存在,或改到其他目录
//通过调用JavaBeans的方法完成上传操作
fub.setUploadDirectory(Dir);
fub.uploadFile(request);
out.print("<center><font color=red>文件上载成功!</font></center>");
%>
FileUploadBean.java
package mybean;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletException;
public class FileUploadBean{
private static String newline = "\r\n"; //设定换行符
private String uploadDirectory = "."; //默认的保存位置
private String ContentType = ""; //文件类型
private String CharacterEncoding = ""; //编码格式
//设定文件要保存在服务器中的位置
public void setUploadDirectory(String s){
uploadDirectory = s;
}
//提取文件名,本方法是把用户上传的文件按照原名保存
private String getFileName(String s){
int i = s.lastIndexOf("\\");
if(i < 0 || i >= s.length() - 1){
i = s.lastIndexOf("/");
if(i < 0 || i >= s.length() - 1)
return s;
}
return s.substring(i + 1);
}
//得到content-type
public void setContentType(String s){
ContentType = s;
int j;
if((j = ContentType.indexOf("boundary=")) != -1){
ContentType = ContentType.substring(j + 9);
ContentType = "--" + ContentType;
}
}
//得到文件编码格式
public void setCharacterEncoding(String s){
CharacterEncoding = s;
}
public void uploadFile( HttpServletRequest req) throws ServletException, IOException{
setCharacterEncoding(req.getCharacterEncoding());
setContentType(req.getContentType());
uploadFile(req.getInputStream());
}
public void uploadFile( ServletInputStream servletinputstream) throws ServletException, IOException{
String s5 = null;
String filename = null;
byte Linebyte[] = new byte[4096];
byte outLinebyte[] = new byte[4096];
int ai[] = new int[1];
int ai1[] = new int[1];
String line;
//得到文件名
while((line = readLine(Linebyte, ai, servletinputstream, CharacterEncoding)) != null){
int i = line.indexOf("filename=");
if(i >= 0){
line = line.substring(i + 10);
if((i = line.indexOf("\"")) > 0)
line = line.substring(0, i);
break;
}
}
filename = line;
if(filename != null && !filename.equals("\"")){
filename = getFileName(filename);
String sContentType = readLine(Linebyte, ai, servletinputstream, CharacterEncoding);
if(sContentType.indexOf("Content-Type") >= 0)
readLine(Linebyte, ai, servletinputstream, CharacterEncoding);
//建立新文件的文件句柄
File file = new File(uploadDirectory, filename);
//建立生成新文件的输出流
FileOutputStream fileoutputstream = new FileOutputStream(file);
while((sContentType = readLine(Linebyte, ai, servletinputstream, CharacterEncoding)) != null){
if(sContentType.indexOf(ContentType) == 0 && Linebyte[0] == 45)
break;
if(s5 != null){
//写入新文件
fileoutputstream.write(outLinebyte, 0, ai1[0]);
fileoutputstream.flush();
}
s5 = readLine(outLinebyte, ai1, servletinputstream, CharacterEncoding);
if(s5 == null || s5.indexOf(ContentType) == 0 && outLinebyte[0] == 45)
break;
fileoutputstream.write(Linebyte, 0, ai[0]);
fileoutputstream.flush();
}
byte byte0;
if(newline.length() == 1)
byte0 = 2;
else
byte0 = 1;
if(s5 != null && outLinebyte[0] != 45 && ai1[0] > newline.length() * byte0)
fileoutputstream.write(outLinebyte, 0, ai1[0] - newline.length() * byte0);
if(sContentType != null && Linebyte[0] != 45 && ai[0] > newline.length() * byte0)
fileoutputstream.write(Linebyte, 0, ai[0] - newline.length() * byte0);
fileoutputstream.close();
}
}
//readLine函数把表单提交上来的数据按行读取
private String readLine(byte Linebyte[], int ai[],ServletInputStream servletinputstream,String CharacterEncoding){
try{ //读取一行
ai[0] = servletinputstream.readLine(Linebyte, 0, Linebyte.length);
if(ai[0] == -1)
return null;
}catch(IOException ex){
return null;
}
try{
if(CharacterEncoding == null){
//用默认的编码方式把给定的byte数组转换为字符串
return new String(Linebyte, 0, ai[0]);
}else{
//用给定的编码方式把给定的byte数组转换为字符串
return new String(Linebyte, 0, ai[0], CharacterEncoding);
}
}catch(Exception ex){
return null;
}
}
}
--------------------------------------------------------------------------------
vBulletin v3.5.4,版权所有 ©2000-2006,Jelsoft Enterprises Ltd.
提升JSP应用程序的7大绝招(转帖)
提升JSP应用程序的7大绝招(转自:http://www.weste.net/2005/1-10/15174728409.html)
作者:陶国强 罗小虎 发布时间:2005-1-10 15:17:47 | 【字体:大 中 小】
枪战系列
你时常被客户抱怨JSP页面响应速度很慢吗?你想过当客户访问次数剧增时,你的WEB应用能承受日益增加的访问量吗?本文讲述了调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。在本文中,我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中,某些调优技术是在你的编程工作中实现的。而另一些技术是与应用服务器的配置相关的。在本文中,我们将详细地描述怎样通过调整servlet和JSP页面,来提高你的应用程序的总体性能。在阅读本文之前,假设你有基本的servlet和JSP的知识。
方法1:在servlet的init()方法中缓存数据
当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。
例如,通过在init()方法中建立一个JDBC连接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库连接,在通常的情况下,我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQL请求都要执行一次JNDI查询的话,那系统性能将会急剧下降。解决方法是如下代码,它通过缓存DataSource,使得下一次SQL调用时仍然可以继续利用它:
public class ControllerServlet extends HttpServlet
{
private javax.sql.DataSource testDS = null;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
Context ctx = null;
try
{
ctx = new InitialContext();
testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");
}
catch(NamingException ne)
{
ne.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public javax.sql.DataSource getTestDS()
{
return testDS;
}
...
...
}
方法 2:禁止servlet和JSP 自动重载(auto-reloading)
Servlet/JSP提供了一个实用的技术,即自动重载技术,它为开发人员提供了一个好的开发环境,当你改变servlet和JSP页面后而不必重启应用服务器。然而,这种技术在产品运行阶段对系统的资源是一个极大的损耗,因为它会给JSP引擎的类装载器(classloader)带来极大的负担。因此关闭自动重载功能对系统性能的提升是一个极大的帮助。
方法 3: 不要滥用HttpSession
在很多应用中,我们的程序需要保持客户端的状态,以便页面之间可以相互联系。但不幸的是由于HTTP具有天生无状态性,从而无法保存客户端的状态。因此一般的应用服务器都提供了session来保存客户的状态。在JSP应用服务器中,是通过HttpSession对像来实现session的功能的,但在方便的同时,它也给系统带来了不小的负担。因为每当你获得或更新session时,系统者要对它进行费时的序列化操作。你可以通过对HttpSession的以下几种处理方式来提升系统的性能:
如果没有必要,就应该关闭JSP页面中对HttpSession的缺省设置: 如果你没有明确指定的话,每个JSP页面都会缺省地创建一个HttpSession。如果你的JSP中不需要使用session的话,那可以通过如下的JSP页面指示符来禁止它:
<%@ page session="false"%>
不要在HttpSession中存放大的数据对像:如果你在HttpSession中存放大的数据对像的话,每当对它进行读写时,应用服务器都将对其进行序列化,从而增加了系统的额外负担。你在HttpSession中存放的数据对像越大,那系统的性能就下降得越快。
当你不需要HttpSession时,尽快地释放它:当你不再需要session时,你可以通过调用HttpSession.invalidate()方法来释放它。
尽量将session的超时时间设得短一点:在JSP应用服务器中,有一个缺省的session的超时时间。当客户在这个时间之后没有进行任何操作的话,系统会将相关的session自动从内存中释放。超时时间设得越大,系统的性能就会越低,因此最好的方法就是尽量使得它的值保持在一个较低的水平。
在jsp页面中获取http请求头的代码(转)
转自:http://www.ericgiguere.com/tools/http-header-viewer.html
Header Viewer Source Code
In case you're wondering, here is the code that prints the headers:
<table width="100%" border="0" cellspacing="0"
cellpadding="8" bgcolor="#EEEEEE">
<tr><td><b>Name</b></td><td><b>Value</b></td></tr>
<tr><td colspan="2" width="100%" height="2" bgcolor="#000000"></td></tr>
<c:forEach var="hname" items="${pageContext.request.headerNames}">
<c:forEach var="hvalue" items="${headerValues[hname]}">
<tr><td valign="top"><c:out value="${hname}"/></td>
<td valign="top"><c:out value="${hvalue}"/></td></tr>
<tr><td colspan="2" bgcolor="#000000" width="100%" height="1"></td></tr>
</c:forEach>
</c:forEach>
</table>
As you can see, it's very easy to access the HTTP headers using the Java Standard Tag Library (JSTL), a powerful tag library for use with JavaServer Pages (JSP).
If you didn't realize that this page was built using JSP pages, See How This Site Works for the details.
在eclipse中改变文件的binary/ascii属性
我用的是eclipse2.1,我想所有版本应该差不多吧。
右键单击文件夹或文件,选择Team->Change file Binary/ASCII property就可以改变文件或文件夹中全部文件的属性。
添加或修改eclipse默认的Binary/ASCII属性,选择菜单中的:Window->Preferences->Team->File Content就行了。
eclipse2.1中默认是没有*.jsp和*.tld这两种文本文件的,所以当初把学习日记导入cvs库时,这两种文件变成了binary属性估计跟这个有关。
我让一个eclipse2.1中的测试断点给拦住了
用了eclipse也有几个月了,可是我没有系统的去学习过它的使用,都是遇到什么问题才想起去解决什么问题。
这两天,我在机器上运行learndiary_login老是到一个地方就停住不动了。我搞不懂是什么原因。把所有的地方都检查了。今天中午,我偶然发现在程序行的左边有一个小蓝点,把鼠标放上去一看,原来是个断点。我突然恍然大悟,我不知无意中在程序行的左边双击了一下,于是就加了一个测试断点。当然,程序运行到这里就停住了。
看来,我还是要系统的把eclipse的基本操作学习一下了。否则尽犯这种低级错误,浪费时间,浪费精力。
ant building 报找不到com.sun.tools.javac.Main
今天,在eclipse2.1中用run ant运行ppig写的ant脚本编译学习日记文档时,发现通不过,报找不到com.sun.tools.javac.main;但不在eclipse2.1环境中在dos命令行窗口中执行能通过。最后,在windows->preferences->ant->Runtime->Classpath->Add Jars中,添加了jdk下面的\lib\tools.jar后,编译通过。原来com.sun.tools.javac.Main在这个tools.jar中。