posts - 72, comments - 66, trackbacks - 0, articles - 0

Eclispe自动提示功能设置如下:

第一步:

windows->preferences->java->Editor->Code   Assist   中

将auto-activetion中的Enable auto-activetion选项要勾选上

这里面有个时间的设定是为提示代码设定的显示时间。你可以根据自己的情况设定。

第二步:

window->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。

另注:也可以直接恢复成默认设置。

posted @ 2008-05-07 15:26 Fingki.li 阅读(1422) | 评论 (1)编辑 收藏

1、单步调试快捷键
以debug方式运行java程序后
(F8)直接执行程序。遇到断点时暂停;
(F5)单步执行程序,遇到方法时进入;
(F6)单步执行程序,遇到方法时跳过;
(F7)单步执行程序,从当前方法跳出。

2、
改变变量的值
右击变量,在弹出的菜单中选择[change variable value],弹出修改画面。
改变其值后,按下ok;这时,变量的值就改为修改后的值了。
3、检查代码段是否正确
选择一句或一段代码,右键单击在弹出的菜单中选择Inspect项,
此时,代码的执行结果将显示在Expressions窗口中。

posted @ 2008-05-06 14:37 Fingki.li 阅读(13138) | 评论 (0)编辑 收藏

要安装exchange2003,首先要安装域控,整理安装过程如下:
1,安装DNS服务
    如果在安装Windows Server 2003过程中,没有选择DNS组件,默认情况下是不被安装的,我们就需要手动去添加它。这里我们需要用到Windows Server 2003的安装光盘。
    添加方法如下:
    “开始—设置—控制面板—添加删除程序”,
    然后再点击“添加/删除Windows组件”
    选中“网络服务”
    默认情况下所有的网络服务都会被添加,可以点击下面的“详细信息”进行自定义安装,由于在这里只需要DNS,所以把其它的全都去掉了,以后需要的时候再安装

    然后就是点“确定”,一直点“下一步”就可以完成整个DNS的安装。在整个安装过程中请保证Windows Server 2003安装光盘位于光驱中,否则会出现找不到文件的提示,那就需要手动定位了。

2,Active Directory安装
    安装完DNS以后,就可以进行提升操作了,先点击“开始—运行”,输入“Dcpromo”,然后回车就可以看到“Active Directory安装向导”
    安装过程按照提示输入相应内容就可以了,
    但是,当到 “DNS 注册诊断”这一步时,可能出现诊断失败,第一次部署时总会出现上面那个DNS注册诊断出错的画面,主要是因为虽然安装了DNS,但由于并没有配置它,网络上还没有可用的DNS服务器,所以才会出现响应超时的现像,所以在这里要选择:“在这台计算机上安装并配置DNS,并将这台DNS服务器设为这台计算机的首选DNS服务器”。
    安装完成后提示重启,
    然后来看一下安装了AD后和没有安装的时候有些什么区别,首先第一感觉就是关机和开机的速度明显变慢了,
    再看一下登陆界面:在“登录到”选项中选择刚配置的域名,登录。
3,检查是否成功
    进入系统后,右键点击“我的电脑”选“属性”,点“计算机”
    如果已经登录上了指定域,
    这台服务器就被成功提升为域控制器了。

posted @ 2008-04-25 11:21 Fingki.li 阅读(2211) | 评论 (0)编辑 收藏

由于最近的项目中要用到kerberos and spnego protocol,查了一些资料,结合网上的资料和对它一定的理解,整理如下,以备后查.(如有不对之处,肯请高手指教)
kerberos是一个很重要的网络认证协议,它实现了在一个非安全的网络环境中,一个实体向另一个实体证实自己的身份,从而以安全的方式进行交流.kerberos protocol已经被广泛应用于各种应用中,最为典型的莫过于windows中的kerberos认证,它在spnego protocol之下,为windows域用户登录提供安全保障.
首先相关名词:
Long term key:就是长期保持不变的key.
Master key:就是Long term key经过Hash运算得到的Hash code.
Short term key:就是只在一定时间内有效的key.有时也叫Session key.
原则上Long term key 是不能在网络上传输的,因为很可能Long term key在传输过程中被人截获,一旦它被截获,原则上只要有足够的时间,就可以被破解.另外,对于一个帐户而言,密码仅限于该用户知道,对于domain的Administrator也应该保密,但由于密码是用户向Administrator证明身份的凭据,所以要基于用户的密码生成来的信息来证明用户的身份,通常做法是对密码进行Hash运算,生成Hash code,这个Hash code就是我们说的Master key.因为Hash Algorithm具有不可逆,同时保证了密码与Master key一一对应的特性,保证了密码的保密性,也保证了Master key可以代表密码作为用户身份的凭证.而作为 Short term key,用来加密在网络上传输的数据,由于它只在一定时间内有效,即使被人截获,等到被破解时,这个key早就过期了.
Client 服务请求者
Server 服务提供者
KDC kerberos distribution certer.在整个认证过程中作为client和server共同信认的第三方.
以windows2003中的Domain为例,Domain Controller扮演着kdc的角色.

下面我来介绍一下这kerberos协议如何实现认证的.
前提:client和server都在kdc上已注册.
第一步 Authentication Service Exchange
第二步 Ticket Granting Service Exchange
第三步 Client/Server Exchange
  首先Client向kdc申请server服务,kdc查看server服务是受保护的服务,所以要验证client的身份,这就是第一步,kdc验证client的身份(Authentication Service Exchange).当kdc核实client的身份正确后,会给client一个证明,用这个证明我们可以得到访问server服务的许可证(Ticket),所以我们把这个证明叫做TGT(Ticket Granting Ticket).
当client得到TGT后,用TGT来向kdc索要访问server服务的通行证(Ticket),这就是第二步Ticket Granting Service Exchange.
当client得到通行证(Ticket)后,就与server交互,向server出示通行证(Ticket),即第三步Client/Server Exchange,从可得到server的服务.
以上三步的具体实现要复杂得多,简单介绍如下:
1. Authentication Service Exchange

通过这个Sub-protocol,KDC(确切地说是KDC中的Authentication Service)实现对Client身份的确认,并颁发给该Client一个TGT。具体过程如

下:

Client向KDC的Authentication Service发送Authentication Service Request(KRB_AS_REQ), 为了确保KRB_AS_REQ仅限于自己和KDC知道,

Client使用自己的Master Key对KRB_AS_REQ的主体部分进行加密(KDC可以通过Domain 的Account Database获得该Client的Master Key)。

KRB_AS_REQ的大体包含以下的内容:

Pre-authentication data:包含用以证明自己身份的信息。说白了,就是证明自己知道自己声称的那个account的Password。一般地,它的内容是

一个被Client的Master key加密过的Timestamp。
Client name & realm: 简单地说就是Domain name\Client Server Name:注意这里的Server Name并不是Client真正要访问的Server的名称,而我们也说

了TGT是和Server无关的(Client只能使用Ticket,而不是TGT去访问Server)。这里的Server Name实际上是KDC的Ticket Granting Service的Server Name。
AS(Authentication Service)通过它接收到的KRB_AS_REQ验证发送方的是否是在Client name & realm中声称的那个人,也就是说要验证发送放是

否知道Client的Password。所以AS只需从Account Database中提取Client对应的Master Key对Pre-authentication data进行解密,如果是一个合法

的Timestamp,则可以证明发送放提供的是正确无误的密码。验证通过之后,AS将一份Authentication Service Response(KRB_AS_REP

)发送给Client。KRB_AS_REQ主要包含两个部分:本Client的Master Key加密过的Session Key(

SKDC-Client:Logon Session Key)和被自己(KDC)加密的TGT。而TGT大体又包含以下的内容

Session Key: SKDC-Client:Logon Session Key
Client name & realm: 简单地说就是Domain

name\Client
End time: TGT到期的时间。
Client通过自己的Master Key对第一部分解密获得Session Key(SKDC-Client:Logon Session Key)之后,携带着TGT便可以进入下一步:TGS(

Ticket Granting Service)Exchange。

2. TGS(Ticket Granting Service)Exchange

TGS(Ticket Granting Service)Exchange通过Client向KDC中的TGS(Ticket Granting Service)发送Ticket Granting Service Request

(KRB_TGS_REQ)开始。KRB_TGS_REQ大体包含以下的内容:

TGT:Client通过AS Exchange获得的Ticket

Granting Ticket,TGT被KDC的Master Key进行加

密。
Authenticator:用以证明当初TGT的拥有者是否就是自己,所以它必须以TGT的办法方和自己的Session Key(SKDC-Client:Logon Session Key

)来进行加密。
Client name & realm: 简单地说就是Domain name\Client。
Server name & realm: 简单地说就是Domain name\Server,这回是Client试图访问的那个Server。
TGS收到KRB_TGS_REQ在发给Client真正的Ticket之前,先得整个Client提供的那个TGT是否是AS颁发给它的。于是它不得不通过Client提供的

Authenticator来证明。但是Authentication是通过Logon Session Key(SKDC-Client)进行加密的,而自己并没有保存这个Session Key。所以

TGS先得通过自己的Master Key对Client提供的TGT进行解密,从而获得这个Logon Session Key(SKDC-Client),再通过这个Logon Session

Key(SKDC-Client)解密Authenticator进行验证。验证通过向对方发送Ticket Granting Service Response(KRB_TGS_REP)。这个KRB_TGS_REP有

两部分组成:使用Logon Session Key(SKDC-Client)加密过用于Client和Server的Session Key(SServer-Client)和使用Server的Master

Key进行加密的Ticket。该Ticket大体包含以下一些内容:

Session Key:SServer-Client。
Client name & realm: 简单地说就是Domain name\Client。
End time: Ticket的到期时间。
Client收到KRB_TGS_REP,使用Logon Session Key(SKDC-Client)解密第一部分后获得Session Key(SServer-Client)。有了Session Key和

Ticket,Client就可以之间和Server进行交互,而无须在通过KDC作中间人了。所以我们说Kerberos是一种高效的认证方式,它可以直接通

过Client和Server双方来完成,不像Windows NT 4下的NTLM认证方式,每次认证都要通过一个双方信任的第3方来完成。

我们现在来看看 Client如果使用Ticket和Server怎样进行交互的,这个阶段通过我们的第3个Sub-protocol来完成:CS(Client/Server )

Exchange。

3. CS(Client/Server )Exchange

Client通过TGSExchange获得Client和Server的Session Key(SServer-Client),随后创建用于证明自己就是Ticket的真正所有者的Authenticator,并使用Session Key(SServer-Client)进行加密。最后将这个被加密过的Authenticator和Ticket作为Application Service Request(KRB_AP_REQ)发

送给Server。除了上述两项内容之外,KRB_AP_REQ还包含一个Flag用于表示Client是否需要进行双向验证(Mutual Authentication)。

Server接收到KRB_AP_REQ之后,通过自己的Master Key解密Ticket,从而获得Session Key(SServer-Client)。通过Session Key(SServer

-Client)解密Authenticator,进而验证对方的身份。验证成功,让Client访问需要访问的资源,否则直接拒绝对方的请求。

对于需要进行双向验证,Server从Authenticator提取Timestamp,使用Session Key(SServer-Client)进行加密,并将其发送给Client用于

Client验证Server的身份。

想要更深入的理解kerberos,请参考官方网站

http://web.mit.edu/Kerberos/

posted @ 2008-04-22 23:21 Fingki.li 阅读(2687) | 评论 (0)编辑 收藏

做SSL以来,一直在使用keytool,下面把它用法整理如下,以备以后查看。
1,产生一个密钥对
        keytool -genkey -alias mykeypair -keypass mykeypairpwd
    过程如下:
        liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ keytool -genkey -alias mykeypair -keypass mykeypairpwd
        输入keystore密码:  123456
        您的名字与姓氏是什么?
          [Unknown]:  fingki
        您的组织单位名称是什么?
          [Unknown]:  server
        您的组织名称是什么?
          [Unknown]:  server
        您所在的城市或区域名称是什么?
          [Unknown]:  bj
        您所在的州或省份名称是什么?
          [Unknown]:  bj
        该单位的两字母国家代码是什么
          [Unknown]:  CN
        CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN 正确吗?
          [否]:  y

        liqingfeng@liqingfeng:~/WORK_APP/keytooltest$
    这样将产生一个keypair,同时产生一个keystore.默认名是.keystore,存放到user-home目录
    假如你想修改密码,可以用:keytool -keypasswd -alias mykeypair -keypass mykeypairpwd -new newpass

2,产生一个密钥对,存放在指定的keystore中(加上-keystore 参数)
    keytool -genkey -alias mykeypair -keypass mykeypairpwd -keystore mykeystore
    过程与上面的相同。
    执行完后,在当前目录下产生一个名为mykeystore的keystore,里面有一个别名为mykeypair的keypair。

3,检查一个keystore中的内容
        keytool -list -v -alias mykeypair -keystore mykeystore
        参数    -v指明要列出详细信息
                -alias指明列出指定的别名为mykeypair的keypair信息(不指定则列出所有)
                -keystore指明要列出名字为mykeystore的keystore中的信息
    过程如下:
        liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ keytool -list -v -keystore mykeystore
        输入keystore密码:  123456

        Keystore 类型: jks
        Keystore 提供者: SUN

        您的 keystore 包含 1 输入

        别名名称: mykeypair
        创建日期: 2008-4-16
        输入类型:KeyEntry
        认证链长度: 1
        认证 [1]:
        Owner: CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN
        发照者: CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN
        序号: 48058c3c
        有效期间: Wed Apr 16 13:18:52 GMT+08:00 2008 至: Tue Jul 15 13:18:52 GMT+08:00 2008
        认证指纹:
             MD5:  FD:C3:97:DC:84:A0:D8:B2:08:6F:26:7F:31:33:C3:05
             SHA1: A3:21:6F:C6:FB:5F:F5:2D:03:DA:71:8C:D3:67:9D:1C:E1:27:A5:11


        *******************************************
        *******************************************


        liqingfeng@liqingfeng:~/WORK_APP/keytooltest$    
 4,Keystore的产生:
    当使用-genkey 或-import或-identitydb命令添加数据到一个keystore,而当这个keystore不存在时,产生一个keystore.默认名是.keystore,存放到user-home目录.
    当用-keystore指定时,将产生指定的keystore.
5,Keystore的实现:
    Keytool 类位于java.security包下,提供一个非常好的接口去取得和修改一个keystore中的信息. 目前有两个命令行:keytool和jarsinger,一个GUI工具Policy 可以实现keystore.由于keystore是公开的,用户可以用它写一些额外的安全应用程序.
    Keystore还有一个sun公司提供的內在实现.它把keystore作为一个文件来实现.利用了一个keystore类型(格式)"JKS".它用单独的密码保护每一个私有钥匙.也用可能不同的密码保护整个keystore的完整性.
    支持的算法和钥匙大小:
    keytool允许用户指定钥匙对和注册密码服务供应者所提供的签名算法.缺省的钥匙对产生算法是"DSA".假如私有钥匙是"DSA"类型,缺省签名算法是"SHA1withDSA",假如私有钥匙是"RSA"类型,缺省算法是"MD5withRSA".
    当产生一个DSA钥匙对,钥匙必须在512-1024位之间.对任何算法的缺省钥匙大小是1024位.
6,关于证书
    一个证书是一个实体的数字签名,还包含这个实体的公共钥匙值.
        公共钥匙 :是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名;
        数字签名:是实体信息用实体的私有钥匙签名(加密)后的数据.这条数据可以用这个实体的公共钥匙来检验签名(解密)出实体信息以鉴别实体的身份;       
        签名:用实体私有钥匙加密某些消息,从而得到加密数据;
        私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据,私有钥匙用来计算签名.公钥加密的消息只能用私钥解密,私钥签名的消息只能用公钥检验签名。
        实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西. 
    实际上,我们用[1]中的命令已经生成了一个自签名的证书,没有指定的参数都使用的是默认值。
    我们也可以用如下命令生成一个自签名的证书:
        keytool -genkey -dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650
        这条命令将生成一个别名为myCA的自签名证书,证书的keypair的密码为654321,证书中实体信息为 "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib的keystore中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。
7,将证书导出到证书文件
    keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc
    使用该命令从名为myCALib的keystore中,把别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码,-rfc指定以可查看编码的方式输出,可省略)。

8,通过证书文件查看证书信息
    keytool -printcert -file myCA.cer
9,密钥库中证书条目口令的修改
    Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib
10,删除密钥库中的证书条目
    keytool -delete -alias myCA -keystore myCALib
11,把一个证书文件导入到指定的密钥库
    keytool -import -alias myCA -file myCA.cer -keystore truststore
    (如果没有名为truststore的keystore,将自动创建,将会提示输入keystore的密码)
12,更改密钥库的密码
    keytool -storepasswd -new 123456  -storepass 789012 -keystore truststore
    其中-storepass指定原密码,-new指定新密码。


posted @ 2008-04-16 15:33 Fingki.li 阅读(4741) | 评论 (0)编辑 收藏

具体安装过程请参考 EJBCA官方说明:http://www.ejbca.org/installation.html
上面说的详细,需要注意的就是下载合适的jce(Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files ),

posted @ 2008-04-14 22:10 Fingki.li 阅读(340) | 评论 (0)编辑 收藏

    最近在研究域控制器方面的问题,看到一论坛上有关工作组和域的介绍很不错,摘录下来如下:
    工作组Work   Group  
 在一个网络内,可能有成百上千台电脑, 如果这些电脑不进行分组,都列在“网上邻居”内,可想而知会有多么乱。为了解决这一问题,Windows   9x/NT/2000就引用了“工作组”这个概念,将不同的电脑一般按功能分别列入不同的组中,如财务部的电脑都列入“财务部”工作组中,人事部的电脑都 列入“人事部”工作组中。你要访问某个部门的资源,就在“网上邻居”里找到那个部门的工作组名,双击就可以看到那个部门的电脑了。  
    那么怎么加入工作组呢?其实很简单,你只需要右击你的Windows桌面上的“网上邻居”,在弹出的菜单出选择“属性”,点击“标识”,在“计算机名”一栏中添入你想好的名字,在“工作组”一栏中添入你想加入的工作组名称。  
 如果你输入的工作组名称以前没有,那么相当于新建一个工作组,当然只有你的电脑在里面。计算机名和工作组的长度不能超过15个英文字符,可以输入汉字,但是不能超过7个。“计算机说明”是附加信息,不填也可以,但是最好填上一些这台电脑主   人的信息,如“技术部主管”等。单击[确定]按钮后,Windows   98提示需要重新启动,按要求重新启动之后,再进入“网上邻居”,就可以看到你所在工作组的成员了。  
    一般来说,同一个工作组内部成员相互交换信息的频率最高,所以你一进入“网上邻居”,首先看到的是你所在工作组的成员。如果要访问其他工作组的成员,需要双击“整个网络”,就会看到网络上所有的工作组,双击工作组名称,就会看到里面的成   员。  
  你也可以退出某个工作组,只要将工作组名称改动即可。不过这样在网上别人照样可以访问你的共享资源,只不过换了一个工作组而已。你可以随便加入同一网 络上的任何工作组,也可以离开一个工作组。“工作组”就像一个自由加入和退出的俱   乐   部一样,它本身的作用仅仅是提供一个“房   间”,以方便网上计算机共享资源的浏览。
    域  
 在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为“域控制器(Domain   Controller,简写为DC)”。“域控制器”中包含了由这个域的账户、密码、 属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。 如果以上信息不正确,域控制器就拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,只能以对等网用户的方式访问 Windows共享出来的资源,这样就一定程度上保护了网络上的资源。    
   
 想把一台电脑加入域,仅仅使它和服务器在“网上邻居”能够相互看到是远远不够的,必须要由网络管理员进行把这台电脑加入域的相关操作。操作过程由服务器端设置和客户端设置构成。    
   
    1、服务器端设置    
   
 以系统管理员身份在已经设置好Active   Directory(活动目录)的Windows   2000   Server上登录,点击“开始/程序/ 管理工具/Active   Directory用户和计算机”,在程序界面中右击“computers”(计算机),在弹出的菜单中单击“新建/计算机”填入想要加入域的计算机名即 可。要加入域的计算机名最好为英文,否则系统会提示中文计算机名可能会引起一些问题。    
   
    2、客户端设置    
   
    首先要确认计算机名称是否正确,然后在桌面“网上邻居”上右击鼠标,点击“属性”出现网络属性设置窗口,确认“主网络登录”为“Microsoft网络用户”。    
   
  选中窗口上方的“Microsoft网络用户”(如果没有此项,说明没有安装,点击[添加]安装“Microsoft网络用户”项)。点击[属性]按 钮,出现“Microsoft网络用户属性”对话框,选中“登录到Windows   NT域”复选框,在“Windows   NT域”中输入要登录的域名。    
   
    Windows   98会提示需要重新启动计算机,重新启动后,会出现一个登录对话框。在输入正确的域用户账号、密码以及登录域之后,就可以使用Windows   2000   Server域中的资源了。请注意,这里的域用户账号和密码,必须是网络管理员为用户建的那个账号和密码,而不是由本机用户自己创建的账号和密码。如果没 有将计算机加入域,或者登录的域名、用户名、密码有一项不正确,就会出现错误信息。

posted @ 2008-04-01 16:22 Fingki.li 阅读(280) | 评论 (0)编辑 收藏

     摘要: 这是MIT(MassachusettsInstituteofTechnology)为了帮助人们理解Kerberos的原理而写的一篇对话集。里面有两个虚构的人物:Athena和Euripides,通过Athena不断的构思和Euripides不断的寻找其中的漏洞,使大家明白了Kerberos协议的原理。 Athena:雅典娜,智慧与技艺的女神。 Euripides:欧里庇得斯,希腊的悲剧诗人。 ...  阅读全文

posted @ 2008-03-27 14:30 Fingki.li 阅读(234) | 评论 (0)编辑 收藏

    在linux下(我用的是ubuntu7),用新立得软件包安装好postgres数据库和pgAdmin后,在pgAdmin中用默认的postgres用户无法登录。
    上网google了一下,没找到解决方法,后一朋友告诉我要新建一个用户才行,具体做法如下:
    1、在命令行下修改用户postgres的密码:sudo passwd postgres
       然后输入你要设置的密码
    2、在命令行下切换到postgres用户:su postgres
       然后输入刚才设置的密码,登录。
    3、在postgres用户下创建新的超级用户:createuser -P testuser
    具体过程如下:
        postgres@liqingfeng:/$ createuser -P testuser
        Enter password for new role:
        再输入一遍:
        Shall the new role be a superuser? (y/n) y
        CREATE ROLE
    4、这样就可以在pgAdmin在用新建的用户testuser来登录了。
    之后可以在pgAdmin中做你想做的一切。
    (关于createuser这个命令具体其他参数,可以在终端输入:man createuser 来查看细节)


posted @ 2008-03-26 11:49 Fingki.li 阅读(1365) | 评论 (0)编辑 收藏

    今天用Eclipse中用ant运行build.xml脚本打包工程,突然ant不工作了,
    查看Eclipse的Error log,显示
    Error logged from Ant UI:
	Exception Stack Trace:

java.net.SocketTimeoutException: Accept timed out

at java.net.PlainSocketImpl.socketAccept(Native Method)

at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)

at java.net.ServerSocket.implAccept(ServerSocket.java:448)

at java.net.ServerSocket.accept(ServerSocket.java:419)

查看build.xml文件无异常,让我好是奇怪,明明昨天还是正常的呀。

后来查看一下Ant Home,发现只有四项,觉得有点不对劲,他细一看,居然指到了/home/fingki/eclipse/plugins/Axis2_service_Archiver_1.3.0/lib下,

重新指定一下Ant Home,运行ant,运行了。

后来研究才发现,原来之前刚装了Axis2的plugins,Axis2_service_Archiver_1.3.0,这样Eclipse重启后优先把Ant Home指向那了,导致ant不工作了。

看来Axis2_service_Archiver_1.3.0这个plugins还是有些bug呀。

具体设置Ant Home如下:在Eclipse中->window->preferences->Ant->Runtime->Classpath,点击Ant home按钮,重新让其指向eclipse中的ant的plugins文件夹处,

一般都在%Eclipse_home%/plugins/org.apache.ant_1.x.x。


posted @ 2008-03-21 16:08 Fingki.li 阅读(1833) | 评论 (0)编辑 收藏

仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8 下一页