温馨提示:您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!

雪山飞鹄

温馨提示:您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!

BlogJava 首页 新随笔 联系 聚合 管理
  215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

#

        环境描述:
                        eclipse3.6
                        jdk1.6
        最近由于项目需求,开始学习OSGI,手头参考资料则为林昊老师的OSGI原理与最佳实践这本书。该书由于发行较早,使用3.6版本的eclipse会遇到各种错误。其中在采用Declarative Service 的方式来实现的时候按作者书上的步骤来则会报这么一个错误。和同事探讨了一下午的时间,原来是缺少一个jar。
        先看下异常信息:
org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.ds_1.2.0.v20100507 [29]" could not be resolved. Reason: Missing Constraint: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0"
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:
1317)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:
1301)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:
319)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:
374)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:
1067)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:
561)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:
546)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:
459)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:
243)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:
440)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:
227)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:
337)

!ENTRY org.eclipse.osgi 4 0 2010-09-07 08:35:43.000
!MESSAGE Bundle reference:file:/D:/eclipse/plugins/org.eclipse.equinox.ds_1.2.0.v20100507.jar was not resolved.
        解决方案:
        在eclipse的run configurations选项卡中勾选org.eclipse.equinox.util_1.0.200.v20100503.jar包即可,org.eclipse.equinox.util为固定部分,后者随着eclipse版本的更新会有所变化。
        最后完整的bundle应该是这样的:
posted @ 2010-09-07 08:50 雪山飞鹄 阅读(3335) | 评论 (0)编辑 收藏

1. Celestia - 从太空看星际


Celestia 是一款免费开放源代码软件。国内有软件介绍把它称作「宇宙穿梭机」或是「鸟瞰地球」,这都名副其实。Celestia 会通过检测操作系统语言自动切换软件语言,对中文支持良好。

用十字指针指向一个星球,在 Celestia 左上角即显示星球的信息。也可以像下图一样选择显示星座,就是在现实看见的同样的星座,没有连线,观赏感受也是不同的。Celestia 的功能多以关键字执行,刚上手也许会感觉不知所措,一时了解不到其中的趣味,只要认识了 Celestia 的基本操作,就能发觉把玩 Celestia 是一件多么有趣的事。

同样作为新手,波斯推荐一定要看 Celestia 的内置演示,就在帮助菜单可以找到。演示有字幕介绍星球的著名点,带你用 Celestia 遨游太阳系,从地球到月球,再去逛土星……就像一个无影的导游在带你进行太空旅行。刚打开 Celestia,我觉得它超闷,但是看了演示后,探索 Celestia 的热情就被激发起来了。

Celestia 还能通过插件增强功能,不过目前插件还只有 1 个。(笑)

下载地址:http://www.shatters.net/celestia/download.html | 自用版本分流 | 35M。


2. Stellarium从地球看星际


Stellarium 非常强悍地内置了非常多国语言,光是中文就有 3 种(为什么有 3 种?)。从设置上来说,可控制的比 Celestia 更多,当然在用途上也有所出入。最不同的是,Stellarium 给你一种从自家阳台抬头望天的观赏感受,而这点 Celestia 是做不到的。Stellarium 也是免费开放源代码软件。


Stellarium 同样能点击星球显示信息,显示信息比 Celestia 的全面。在星座显示上,还能显示形象配图。所见区域也能选择地域而定,不过预设的中国区域太少了,找来找去才只有一个 Acheng, China。

用户可以通过拖拽天空看到头顶上的星际。默认是实时显示,所以波斯的截图就不是夜间版了,夜间版比较有说服力的说。背景的图,就是下图可见的树木房屋之类都是可换的。

不过 Stellarium 貌似对字体有要求,也许是波斯换了语言后没有设置好,如图所见的本来应该显示星球名称的地方都变成了小方块。不过跟 GDI++ 字体渲染没有冲突。

Stellarium 在官方主页有新手教学,比 Celestia 重视新人用户培养呢。

下载地址:http://www.stellarium.org/zh/ | Windows 版本约 41M。


希望你也能从这两款软件找到你久违的星空吧!离题地说一句,大家要爱护环境,保护地球噢!

posted @ 2010-09-05 12:50 雪山飞鹄 阅读(1803) | 评论 (1)编辑 收藏

        此文档根据adobe官方flex文档制作而成。http://www.adobe.com/cn/devnet/flex/?view=documentation,官方提供为web版,体积较大,达50M左右。本人使用工具现已制作成chm格式文档体积在35M左右。方便查阅。
温馨提示:在下载的时候不要使用迅雷等其他下载工具下载,使用浏览器默认的HTTP协议下载即可!否则下载下来的文件会存在格式问题。chm格式文件的通病
为了及时分享给大家,特意将该文档上传至google code有需要的可以直接点击下载http://struts2typeconverter.googlecode.com/files/Flex4.0API.chm

再次提醒:鉴于广大用户一再发函索取该帮助文档,用户较多,本人也不便为大家一一发送,特将该文档上传至google code有需要的朋友可点击下载http://struts2typeconverter.googlecode.com/files/Flex4.0API.chm.另还有朋友反馈提示打开不,可参考这篇博文chm文件打不开的原因.希望对读者朋友有所帮助!


        为了及时分享给大家,特意将该文档上传至google code有需要的可以直接点击下载http://struts2typeconverter.googlecode.com/files/Flex4.0API.chm
        温馨提示:在下载的时候不要使用迅雷等其他下载工具下载,使用浏览器默认的HTTP协议下载即可!否则下载下来的文件会存在格式问题。chm格式文件的通病
        再次提醒:鉴于广大用户一再发函索取该帮助文档,用户较多,本人也不便为大家一一发送,特将该文档上传至google code有需要的朋友可点击下载http://struts2typeconverter.googlecode.com/files/Flex4.0API.chm.另还有朋友反馈提示打开不,可参考这篇博文chm文件打不开的原因.希望对读者朋友有所帮助!

posted @ 2010-09-03 14:17 雪山飞鹄 阅读(19942) | 评论 (116)编辑 收藏

        baidu百科这样介绍它:
        Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据.
        开元百科这样介绍它:
        Hessian是Caucho开发的一种二进制Web Service协议。采取Apache许可协议. 
        The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.
Hessian是一个精心打造的Web Service实现,它支持Java、C#、Ruby、PHP和Python,又新增了ActionScript。使用Adobe Flash和Flex的RIA开发者们在需要集成业务服务的时候,Hessian应该是一个不错的选择。
        既然都它这么神奇,那么我们就又要去认识下这位新朋友。
        项目主页:http://hessian.caucho.com/
        建议大家仔细认真阅读下官方网站。
        还是先从helloworld着手。
        它只需要一个jar包即可
        去官方下载适用于java环境下的jar包支持
        hessian-4.0.7.jar   hessian-4.0.7-src.jar
        创建web工程。
        编写接口:
package com.hessian.demo.inf;

public interface HelloWorld {
    
    
public String sayHelloWorld(String name);
    
}
        编写实现类:
package com.hessian.demo.impl;

import com.hessian.demo.inf.HelloWorld;

public class HelloWorldImpl implements HelloWorld {

    
public String sayHelloWorld(String name) {
        
return "Hello ,"+name+"Welcome to use hessian ! ";
    }

}
        配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns
="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<servlet>
        
<servlet-name>helloworld</servlet-name>
        
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
        
<init-param>
            
<!-- 此处hom-api为固定写法,为HessianServlet中定义的参数详细可参考HessianServlet -->
            
<!-- 其值为接口的类长名即 包名+类名 -->
            
<param-name>home-api</param-name>
            
<param-value>com.hessian.demo.inf.HelloWorld</param-value>
        
</init-param>
        
<init-param>
            
<!-- 此处hom-class为固定写法,为HessianServlet中定义的参数详细可参考HessianServlet -->
            
<!-- 其值为实现类的类长名即 包名+类名 -->
            
<param-name>home-class</param-name>
            
<param-value>com.hessian.demo.impl.HelloWorldImpl</param-value>
        
</init-param>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>helloworld</servlet-name>
        
<url-pattern>/helloworld</url-pattern>
    
</servlet-mapping>
</web-app>
        此处web.xml中配置的初始化参数具体可参考HessianServlet的init()方法
public void init(ServletConfig config)
    
throws ServletException
  {
    
super.init(config);
    
    
try {
      
if (_homeImpl != null) {
      }
      
else if (getInitParameter("home-class"!= null) {
    String className 
= getInitParameter("home-class");
    
    Class homeClass 
= loadClass(className);

    _homeImpl 
= homeClass.newInstance();
    
    init(_homeImpl);
      }
      
else if (getInitParameter("service-class"!= null) {
    String className 
= getInitParameter("service-class");
    
    Class homeClass 
= loadClass(className);

    _homeImpl 
= homeClass.newInstance();
    
    init(_homeImpl);
      }
      
else {
    
if (getClass().equals(HessianServlet.class))
      
throw new ServletException("server must extend HessianServlet");

    _homeImpl 
= this;
      }

      
if (_homeAPI != null) {
      }
      
else if (getInitParameter("home-api"!= null) {
    String className 
= getInitParameter("home-api");
    
    _homeAPI 
= loadClass(className);
      }
      
else if (getInitParameter("api-class"!= null) {
    String className 
= getInitParameter("api-class");

    _homeAPI 
= loadClass(className);
      }
      
else if (_homeImpl != null) {
    _homeAPI 
= findRemoteAPI(_homeImpl.getClass());

    
if (_homeAPI == null)
      _homeAPI 
= _homeImpl.getClass();
      }
      
      
if (_objectImpl != null) {
      }
      
else if (getInitParameter("object-class"!= null) {
    String className 
= getInitParameter("object-class");
    
    Class objectClass 
= loadClass(className);

    _objectImpl 
= objectClass.newInstance();

    init(_objectImpl);
      }

      
if (_objectAPI != null) {
      }
      
else if (getInitParameter("object-api"!= null) {
    String className 
= getInitParameter("object-api");
    
    _objectAPI 
= loadClass(className);
      }
      
else if (_objectImpl != null)
    _objectAPI 
= _objectImpl.getClass();

      _homeSkeleton 
= new HessianSkeleton(_homeImpl, _homeAPI);
      
if (_objectAPI != null)
    _homeSkeleton.setObjectClass(_objectAPI);

      
if (_objectImpl != null) {
    _objectSkeleton 
= new HessianSkeleton(_objectImpl, _objectAPI);
    _objectSkeleton.setHomeClass(_homeAPI);
      }
      
else
    _objectSkeleton 
= _homeSkeleton;

      
if ("true".equals(getInitParameter("debug")))
    _isDebug 
= true;

      
if ("false".equals(getInitParameter("send-collection-type")))
    setSendCollectionType(
false);
    } 
catch (ServletException e) {
      
throw e;
    } 
catch (Exception e) {
      
throw new ServletException(e);
    }
  }
         编写客户端测试代码:
package com.hessian.demo.client;

import com.caucho.hessian.client.HessianProxyFactory;
import com.hessian.demo.inf.HelloWorld;

public class HelloWorldClient {
    
    
public static void main(String[] args) throws Exception{
        
//servlet的访问路径
        String url="http://localhost:8080/hessian/helloworld";
        
//创建一HessianProxyFactory对象,用法与xfire很像
        HessianProxyFactory proxyFactory=new HessianProxyFactory();
        
//获得HelloWorld的实例,传递两个参数依次为:接口.class,该servlet的访问路径
        HelloWorld helloWorld=(HelloWorld) proxyFactory.create(HelloWorld.class, url);
        System.out.println(helloWorld.sayHelloWorld(
"张三"));
    }
}
        效果图:


posted @ 2010-09-01 09:24 雪山飞鹄 阅读(2658) | 评论 (2)编辑 收藏

今天发现了一个不错的css+div布局网站。学习css+div的童鞋不妨可以参考下。共50种布局。
地址:http://cssdiv.net/layout/
demo下载:点我下载
截图:



posted @ 2010-08-31 14:29 雪山飞鹄 阅读(1861) | 评论 (0)编辑 收藏

1、关关雎鸠,在河之洲,窈窕淑女,君子好逑——《诗经 关雎》

连鸟都谈情说爱,更何况是人?温柔贤淑的好姑娘,确实是小伙子的理想伴侣。

2、执子之手,与子偕老——《诗经 国风 邶风 击鼓》

“我能想到最浪漫的事,就是和你一起慢慢变老,直到我们老的哪儿都去不了,你还依然把我当成手心里的宝”

3、知我者谓我心忧,不知我者谓我何求——《诗经 王风 黍离》

了解我的人都知道我只是心情不大好,不了解我的人还以为我想啥坏事儿呢

4、桃之夭夭,灼灼其华——《诗经 周南 桃夭》

哎,嘟嘟,那里有好多好多桃树哦,花开的好好灿烂、好好漂亮耶

5、昔我往矣,杨柳依依,今我来思,雨雪霏霏——《诗经 小雅 采薇》

“我从春天走来,你在秋天说要分开”,好家伙,出了趟远差,回来都冬天了

6、蒹葭苍苍,白露为霜,所谓伊人,在水一方——《诗经 秦风 蒹葭》

“沉默年代或许不该太遥远的相爱”,青纱帐,挂白霜,所爱之人远在北京“水立方”

7、投我以木桃,报之以琼瑶——《诗经 卫风 木瓜》

予人玫瑰,手有余香,以德报德,君子之德

8、彼采萧兮,一日不见,如三秋兮——《诗经 王风 采葛》

“我爱你,爱着你,就像老鼠爱大米”

9、呦呦鹿鸣,食野之苹,我有嘉宾,鼓瑟吹笙——《诗经 小雅 鹿鸣》

群鹿尚知有物共享,人更当如此。“有朋自远方来,不亦乐乎?”

10、战战兢兢,如临深渊,如履薄冰——《诗经 小雅 小旻》

“我害怕,都是没有用,你怕我总是不会懂”

11、七月流火,九月授衣——《诗经 豳风 七月》

七月那颗星都划过去了,“想为你披件外衣,天凉要爱惜自己”

12、它山之石,可以攻玉——《诗经 小雅 鹤呜》

别的山上生长的石头,照样能雕琢成美丽的玉器。

13、高山仰止,景行行止——《诗经 小雅 车舝》

“你是光,你是电,你是唯一的神话,我只爱你,you are my super star”

14、风雨如晦,鸡鸣不已,既见君子,云胡不喜——《诗经 郑风 风雨》

“一个人在这个夜里,孤单得难以入睡”,既然亲爱的你来了,那我还有什么不高兴的呢

15、兄弟阋于墙,外御其侮——《诗经 小雅 棠棣》

毕竟是兄弟,别看平时偶尔吵吵闹闹,一旦有外人侵犯,立马就会合而为一,毫不含糊

16、有匪君子,如切如磋,如琢如磨——《诗经 卫风 淇奥》

这小子真帅,要脸蛋儿有脸蛋儿,要身材有身材

17、巧笑倩兮,美目盼兮——《诗经 国风 卫风 硕人》

八戒说:“娘子,你笑得真好看!”

18、青青子衿,悠悠我心——《诗经 国风 郑风 子衿》

“忘不了你的好,忘不了你醉人的缠绵”

19、言者无罪,闻者足戒——《诗经 周南 关雎 序》

大胆发言,说错了不要紧;坐着不动的,有则改之,无则加勉。

20、心之忧矣,如匪浣衣。静言思之,不能奋飞——《诗经 国风 邶风 柏舟》

我是真的担心你呀,对你的牵挂像脏衣服上的污垢,绕我旁侧,挥之不去。安静的时候总会想起你,“装上翅膀,我要飞向你”

posted @ 2010-08-30 13:28 雪山飞鹄 阅读(2062) | 评论 (2)编辑 收藏

1,调web浏览器

Uri myBlogUri = Uri.parse("http://kuikui.javaeye.com");

returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);

2,地图

Uri mapUri = Uri.parse("geo:38.899533,-77.036476");

returnIt = new Intent(Intent.ACTION_VIEW, mapUri);

3,调拨打电话界面

Uri telUri = Uri.parse("tel:100861");

returnIt = new Intent(Intent.ACTION_DIAL, telUri);

4,直接拨打电话

Uri callUri = Uri.parse("tel:100861");

returnIt = new Intent(Intent.ACTION_CALL, callUri);

5,卸载

Uri uninstallUri = Uri.fromParts("package", "xxx", null);

returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);

6,安装

Uri installUri = Uri.fromParts("package", "xxx", null);

returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);

7,播放

Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");

returnIt = new Intent(Intent.ACTION_VIEW, playUri);

8,调用发邮件

Uri emailUri = Uri.parse("mailto:shenrenkui@gmail.com");

returnIt = new Intent(Intent.ACTION_SENDTO, emailUri);

9,发邮件

returnIt = new Intent(Intent.ACTION_SEND);

String[] tos = { "shenrenkui@gmail.com" };

String[] ccs = { "shenrenkui@gmail.com" };

returnIt.putExtra(Intent.EXTRA_EMAIL, tos);

returnIt.putExtra(Intent.EXTRA_CC, ccs);

returnIt.putExtra(Intent.EXTRA_TEXT, "body");

returnIt.putExtra(Intent.EXTRA_SUBJECT, "subject");

returnIt.setType("message/rfc882");

Intent.createChooser(returnIt, "Choose Email Client");

10,发短信

Uri smsUri = Uri.parse("tel:100861");

returnIt = new Intent(Intent.ACTION_VIEW, smsUri);

returnIt.putExtra("sms_body", "shenrenkui");

returnIt.setType("vnd.android-dir/mms-sms");

11,直接发邮件

Uri smsToUri = Uri.parse("smsto://100861");

returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri);

returnIt.putExtra("sms_body", "shenrenkui");

12,发彩信

Uri mmsUri = Uri.parse("content://media/external/images/media/23");

returnIt = new Intent(Intent.ACTION_SEND);

returnIt.putExtra("sms_body", "shenrenkui");

returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri);

returnIt.setType("image/png");

用获取到的Intent直接调用startActivity(returnIt)就ok了。
注:
本文转自:http://kuikui.javaeye.com/blog/318627
posted @ 2010-08-30 09:47 雪山飞鹄 阅读(2076) | 评论 (0)编辑 收藏

环境:
     jboss4.2.3
异常摘要:
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
    at com.sun.faces.config.WebConfiguration.getInstance(WebConfiguration.java:
154)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:
144)
    at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:
71)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:
3856)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:
4361)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:
790)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:
770)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:
553)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:
296)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:
164)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.apache.catalina.core.StandardContext.init(StandardContext.java:
5312)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:
296)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:
164)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:
301)
    at org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:
104)
    at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:
375)
    at org.jboss.web.WebModule.startModule(WebModule.java:
83)
    at org.jboss.web.WebModule.startService(WebModule.java:
61)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:
289)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:
245)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:
978)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:
417)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:
210)
    at $Proxy44.start(Unknown Source)
    at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:
466)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:
133)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:
142)
    at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:
97)
    at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:
238)
    at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:
87)
    at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:
188)
    at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:
95)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:
210)
    at $Proxy45.start(Unknown Source)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:
1025)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:
819)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:
782)
    at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:
133)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:
142)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:
210)
    at $Proxy9.deploy(Unknown Source)
    at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:
421)
    at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:
634)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:
263)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:
336)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:
289)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:
245)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:
978)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:
417)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:
210)
    at $Proxy4.start(Unknown Source)
    at org.jboss.deployment.SARDeployer.start(SARDeployer.java:
304)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:
1025)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:
819)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:
782)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:
766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
    at java.lang.reflect.Method.invoke(Method.java:
597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:
94)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:
133)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:
142)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:
88)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:
659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:
210)
    at $Proxy5.deploy(Unknown Source)
    at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:
482)
    at org.jboss.system.server.ServerImpl.start(ServerImpl.java:
362)
    at org.jboss.Main.boot(Main.java:
200)
    at org.jboss.Main$
1.run(Main.java:508)
    at java.lang.Thread.run(Thread.java:
619)
从异常信息可以看出是jboss服务器在解析jsf时出现了问题,但项目中没用到jsf啊,仔细检查,在工程目录下发现了jsf-api.jar和jsf-impl.jar,移除jsf-api.jar和jsf-impl.jar两个jar文件。问题解决。
posted @ 2010-08-23 14:30 雪山飞鹄 阅读(2889) | 评论 (1)编辑 收藏


    程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下:

android.permission.ACCESS_CHECKIN_PROPERTIES

允许读写访问”properties”表在 checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)

android.permission.ACCESS_COARSE_LOCATION

允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)

android.permission.ACCESS_FINE_LOCATION

允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)

android.permission.ACCESS_MOCK_LOCATION

允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)

android.permission.ACCESS_NETWORK_STATE

允许程序访问有关GSM网络信息(Allows applications to access information about networks)

android.permission.ACCESS_SURFACE_FLINGER

允许程序使用SurfaceFlinger底层特性 (Allows an application to use SurfaceFlinger’s low level features)

android.permission.ACCESS_WIFI_STATE

允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)

android.permission.ADD_SYSTEM_SERVICE

允许程序发布系统级服务(Allows an application to publish system-level services).

android.permission.BATTERY_STATS

允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)

android.permission.BLUETOOTH

允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)

android.permission.BLUETOOTH_ADMIN

允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)

android.permission.BRICK

请求能够禁用设备(非常危险)(Required to be able to disable the device (very *erous!).)

android.permission.BROADCAST_PACKAGE_REMOVED

允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)

android.permission.BROADCAST_STICKY

允许一个程序广播常用intents(Allows an application to broadcast sticky intents)

android.permission.CALL_PHONE

允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认 (Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)

android.permission.CALL_PRIVILEGED

允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认 (Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)

android.permission.CAMERA

请求访问使用照相设备(Required to be able to access the camera device. )

android.permission.CHANGE_COMPONENT_ENABLED_STATE

允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )

android.permission.CHANGE_CONFIGURATION

允许一个程序修改当前设置,如本地化(Allows an application to modify the current configuration, such as locale. )

android.permission.CHANGE_NETWORK_STATE

允许程序改变网络连接状态(Allows applications to change network connectivity state)

android.permission.CHANGE_WIFI_STATE

允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)

android.permission.CLEAR_APP_CACHE

允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )

android.permission.CLEAR_APP_USER_DATA

允许一个程序清除用户设置(Allows an application to clear user data)

android.permission.CONTROL_LOCATION_UPDATES

允许启用禁止位置更新提示从无线模块 (Allows enabling/disabling location update notifications from the radio. )

android.permission.DELETE_CACHE_FILES

允许程序删除缓存文件(Allows an application to delete cache files)

android.permission.DELETE_PACKAGES

允许一个程序删除包(Allows an application to delete packages)

android.permission.DEVICE_POWER

允许访问底层电源管理(Allows low-level access to power management)

android.permission.DIAGNOSTIC

允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )

android.permission.DISABLE_KEYGUARD

允许程序禁用键盘锁(Allows applications to disable the keyguard )

android.permission.DUMP

允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)

android.permission.EXPAND_STATUS_BAR

允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )

android.permission.FACTORY_TEST

作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application, running as the root user. )

android.permission.FLASHLIGHT

访问闪光灯,android开发网提示HTC Dream不包含闪光灯(Allows access to the flashlight )

android.permission.FORCE_BACK

允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )

android.permission.FOTA_UPDATE

暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.

android.permission.GET_ACCOUNTS

访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)

android.permission.GET_PACKAGE_SIZE

允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )

android.permission.GET_TASKS

允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)

android.permission.HARDWARE_TEST

允许访问硬件(Allows access to hardware peripherals. )

android.permission.INJECT_EVENTS

允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)

android.permission.INSTALL_PACKAGES

允许一个程序安装packages(Allows an application to install packages. )

android.permission.INTERNAL_SYSTEM_WINDOW

允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )

android.permission.INTERNET

允许程序打开网络套接字(Allows applications to open network sockets)

android.permission.MANAGE_APP_TOKENS

允许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )

android.permission.MASTER_CLEAR目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机

android.permission.MODIFY_AUDIO_SETTINGS

允许程序修改全局音频设置(Allows an application to modify global audio settings)

android.permission.MODIFY_PHONE_STATE

允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state ? power on, mmi, etc. )

android.permission.MOUNT_UNMOUNT_FILESYSTEMS

允许挂载和反挂载文件系统可移动存储 (Allows mounting and unmounting file systems for removable storage. )

android.permission.PERSISTENT_ACTIVITY

允许一个程序设置他的activities显示 (Allow an application to make its activities persistent. )

android.permission.PROCESS_OUTGOING_CALLS

允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)

android.permission.READ_CALENDAR

允许程序读取用户日历数据(Allows an application to read the user’s calendar data.)

android.permission.READ_CONTACTS

允许程序读取用户联系人数据(Allows an application to read the user’s contacts data.)

android.permission.READ_FRAME_BUFFER

允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)

android.permission.READ_INPUT_STATE

允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )

android.permission.READ_LOGS

允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )

android.permission.READ_OWNER_DATA

允许程序读取所有者数据(Allows an application to read the owner’s data)

android.permission.READ_SMS

允许程序读取短信息(Allows an application to read SMS messages.)

android.permission.READ_SYNC_SETTINGS

允许程序读取同步设置(Allows applications to read the sync settings)

android.permission.READ_SYNC_STATS

允许程序读取同步状态(Allows applications to read the sync stats)

android.permission.REBOOT

请求能够重新启动设备(Required to be able to reboot the device. )

android.permission.RECEIVE_BOOT_COMPLETED

允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )

android.permission.RECEIVE_MMS

允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )

android.permission.RECEIVE_SMS

允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)

android.permission.RECEIVE_WAP_PUSH

允许程序监控将收到WAP PUSH信息(Allows an application to monitor incoming WAP push messages. )

android.permission.RECORD_AUDIO

允许程序录制音频(Allows an application to record audio)

android.permission.REORDER_TASKS

允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks)

android.permission.RESTART_PACKAGES

允许程序重新启动其他程序(Allows an application to restart other applications)

android.permission.SEND_SMS

允许程序发送SMS短信(Allows an application to send SMS messages)

android.permission.SET_ACTIVITY_WATCHER

允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.

android.permission.SET_ALWAYS_FINISH

允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.

android.permission.SET_ANIMATION_SCALE

修改全局信息比例(Modify the global animation scaling factor.)

android.permission.SET_DEBUG_APP

配置一个程序用于调试(Configure an application for debugging.)

android.permission.SET_ORIENTATION

允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation

(actually rotation) of the screen.)

android.permission.SET_PREFERRED_APPLICATIONS

允许一个程序修改列表参数 PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods.)

android.permission.SET_PROCESS_FOREGROUND

允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)

android.permission.SET_PROCESS_LIMIT

允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )

android.permission.SET_TIME_ZONE

允许程序设置时间区域(Allows applications to set the system time zone)

android.permission.SET_WALLPAPER

允许程序设置壁纸(Allows applications to set the wallpaper )

android.permission.SET_WALLPAPER_HINTS

允许程序设置壁纸hits(Allows applications to set the wallpaper hints)

android.permission.SIGNAL_PERSISTENT_PROCESSES

允许程序请求发送信号到所有显示的进程中 (Allow an application to request that a signal be sent to all persistent processes)

android.permission.STATUS_BAR

允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.

android.permission.SUBSCRIBED_FEEDS_READ

允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )

android.permission.SUBSCRIBED_FEEDS_WRITE

系统暂时保留改设置,android开发网认为未来版本会加入该功能。

android.permission.SYSTEM_ALERT_WINDOW

允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层(Allows an application to open

windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. )

android.permission.VIBRATE

允许访问振动设备(Allows access to the vibrator)

android.permission.WAKE_LOCK

允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失( Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming)

android.permission.WRITE_APN_SETTINGS

允许程序写入API设置(Allows applications to write the apn settings)

android.permission.WRITE_CALENDAR

允许一个程序写入但不读取用户日历数据(Allows an application to write (but not read) the user’s calendar data. )

android.permission.WRITE_CONTACTS

允许程序写入但不读取用户联系人数据(Allows an application to write (but not read) the user’s contacts data. )

android.permission.WRITE_GSERVICES

允许程序修改Google服务地图(Allows an application to modify the Google service map. )

android.permission.WRITE_OWNER_DATA

允许一个程序写入但不读取所有者数据(Allows an application to write (but not read) the owner’s data.)

android.permission.WRITE_SETTINGS

允许程序读取或写入系统设置(Allows an application to read or write the system settings. )

android.permission.WRITE_SMS

允许程序写短信(Allows an application to write SMS messages)

android.permission.WRITE_SYNC_SETTINGS

允许程序写入同步设置(Allows applications to write the sync settings)

android平台上的权限许可分得很细,如果软件无法正常执行时看看是不是缺少相关的permission声明,最终我们还需要使用 android sign tools签名生成的apk文件。
posted @ 2010-08-21 16:48 雪山飞鹄 阅读(1767) | 评论 (0)编辑 收藏

    环境:
            mysql-5.0.22-win32
            php-5.2.14-Win32
            httpd-2.2.16-win32-x86-openssl-0.9.8o
            WindowsXP sp3
            众说周知php好用,但环境很麻烦。虽然网上有一大堆php集成好的环境。但真正使用起来还不是很好使。这里本人花了一两个小时,亲自实践搭建了php的环境。以防遗忘,特做成文档。在此分享出来。之所以做成文档,一方面,在搭建过程抓去了大量的图片,而在blog上传图片,确实是一件体力活,再者,近来本人发现blog剽窃很是猖狂。别人辛辛苦苦,写好久,他一个Ctrl+C,Ctrl+V就出自他笔了。很不尊重别人的劳动成果。只是希望在转载的时候注明原作者及出处。
            相信此文档可以算是有史以来最为详细的关于php环境搭建的教程了,每一个操作步骤,都有图为证。文档达到34页,照着步骤一步一步来,保你顺利搭建php环境。不信你来瞧瞧。
            点我下载word文档
            点我下载pdf文档
    

posted @ 2010-08-17 16:23 雪山飞鹄 阅读(1636) | 评论 (4)编辑 收藏

仅列出标题
共22页: First 上一页 10 11 12 13 14 15 16 17 18 下一页 Last