随笔-11  评论-0  文章-0  trackbacks-0
  2010年9月29日

一.Myeclipse10下载与破解

Genuitec 公司发布了MyEclipse 10,一款Genuitec旗下的商业化Eclipse集成开发工具的升级版本。MyEclipse 10基于Eclipse Indigo构建,为Java和JavaEE项目提供了Maven3的支持。本次发布的版本中还加入了对JaveEE 6、HTML5、JPA2和JSF 2的支持。版本号10是为了庆祝即将到来的Eclipse的10周年诞辰(MyEclipse的首次发布是在8年前)。

我现在用的还是6.5的版本,6.5的版本是我觉得最好用的一个版本。 我装上了,还没感受到有哪些好用,就是感觉体积庞大,和IBM 的WID一样,是个多面手,啥事都能干,其实经常能使用的也就其中那么几个功能,要是能像插件一样,即插即用就好了。 

MyEclipse 10使用最高级的桌面和Web开发技术,包括 HTML5 和 Java EE 6,支持 JPA 2.0、JSF 2.0 、Eclipselink 2.1 以及 OpenJPA 2.0. 而对 IBM WebSphere 用户来说,MyEclipse Blue 支持最新版本的 WebSphere Portal Server 7.0、WebSphere 8 以及以前的版本,无缝的支持 IBM DB2 数据库 。 MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开元产品的专属eclipse开发工 具。

以下是下载与破解链接(右击迅雷下载):

Myeclipse10 正式下载

Myeclipse10 Bule版下载

Myeclipse9/10破解包(内附详细破解步骤)

另附Myeclipse8/9/10 Verycd下载出处:Myeclipse_Verycd下载

二.Myeclipse10修改字体

MyEclipse10 是基于Eclipse3.7内核,但在Eclipse的Preferences-〉general-〉Appearance->Colors and Fonts 中并没有找到Courier New字体,它采用的是Consolas字体,中文看着非常小非常别扭,在Windows7下,系统自带虽然有Courier New字体,但是并没有激活显示,需要手动激活,才能在软件中使用

激活方法如下:
在win7的控制面板->字体,找到Courier New,右键,显示。然后在eclipse的fonts列表中就可以选择了。上两张图


三.Myeclipse10插件安装

说到插件,myeclipse自8.X开始,插件安装就变得巨难用,通常最好还是用离线安装,在线安装很可能出问题,下面仅以SVN安装为例,其他诸如ADT15,Aptana等都可采用

1.首先下载SVN包:svn-1.6
2.解压SVN包,然后找到其中的两个文件夹:features 和 plugins
3.随意建一个文件夹(位置和名称自己定就好了,我的是E:\myEclipsePlugin\svn),然后把第二步的解压好的features 和 plugins放到这个文件夹下
4.找到myeclipse的安装目录,下面有一个configuration\org.eclipse.equinox.simpleconfigurator\bundles.info 文件。现在需要做的就是在该文件内添加的东西
5.添加的内容用下面的类生成:

  1. <span style="font-size:13px;">import java.io.File;     
  2. import java.util.ArrayList;     
  3. import java.util.List;     
  4. /**   
  5.  * MyEclipse9 插件配置代码生成器   
  6.  *   
  7.  *   
  8.  */    
  9. public class PluginConfigCreator     
  10. {     
  11.     public PluginConfigCreator()     
  12.     {     
  13.     }     
  14.     public void print(String path)     
  15.     {     
  16.         List<String> list = getFileList(path);     
  17.         if (list == null)     
  18.         {     
  19.             return;     
  20.         }     
  21.         int length = list.size();     
  22.         for (int i = 0; i < length; i++)     
  23.         {     
  24.             String result = "";     
  25.             String thePath = getFormatPath(getString(list.get(i)));     
  26.             File file = new File(thePath);     
  27.             if (file.isDirectory())     
  28.             {     
  29.                 String fileName = file.getName();     
  30.                 if (fileName.indexOf("_") < 0)     
  31.                 {     
  32.                     print(thePath);     
  33.                     continue;     
  34.                 }     
  35.                 String[] filenames = fileName.split("_");     
  36.                 String filename1 = filenames[0];     
  37.                 String filename2 = filenames[1];     
  38.                 result = filename1 + "," + filename2 + ",file:/" + path + "/"    
  39.                         + fileName + "\\,4,false";     
  40.                 System.out.println(result);     
  41.             } else if (file.isFile())     
  42.             {     
  43.                 String fileName = file.getName();     
  44.                 if (fileName.indexOf("_") < 0)     
  45.                 {     
  46.                     continue;     
  47.                 }     
  48.                 int last = fileName.lastIndexOf("_");// 最后一个下划线的位置     
  49.                 String filename1 = fileName.substring(0, last);     
  50.                 String filename2 = fileName.substring(last + 1, fileName     
  51.                         .length() - 4);     
  52.                 result = filename1 + "," + filename2 + ",file:/" + path + "/"    
  53.                         + fileName + ",4,false";     
  54.                 System.out.println(result);     
  55.             }     
  56.         }     
  57.     }     
  58.     public List<String> getFileList(String path)     
  59.     {     
  60.         path = getFormatPath(path);     
  61.         path = path + "/";     
  62.         File filePath = new File(path);     
  63.         if (!filePath.isDirectory())     
  64.         {     
  65.             return null;     
  66.         }     
  67.         String[] filelist = filePath.list();     
  68.         List<String> filelistFilter = new ArrayList<String>();     
  69.         for (int i = 0; i < filelist.length; i++)     
  70.         {     
  71.             String tempfilename = getFormatPath(path + filelist[i]);     
  72.             filelistFilter.add(tempfilename);     
  73.         }     
  74.         return filelistFilter;     
  75.     }     
  76.     public String getString(Object object)     
  77.     {     
  78.         if (object == null)     
  79.         {     
  80.             return "";     
  81.         }     
  82.         return String.valueOf(object);     
  83.     }     
  84.     public String getFormatPath(String path)     
  85.     {     
  86.         path = path.replaceAll("\\\\", "/");     
  87.         path = path.replaceAll("//", "/");     
  88.         return path;     
  89.     }     
  90.     public static void main(String[] args)     
  91.     {     
  92.         /*你的SVN的features 和 plugins复制后放的目录*/    
  93.             String plugin = "E:/myEclipsePlugin/svn/";     
  94.         new PluginConfigCreator().print(plugin);     
  95.     }     
  96. }  </span>  
6.把以上生成的字符串(一大堆)添加到第四步bundles.info文件的后面,然后重启myeclipse即可。


此外Adobe Flash Builder 4.6也完美支持Myeclipse10,只是插件在安装的时候不是采用以上方式,根据官方英文文档说明,

首先要将Adobe Flash Builder 4.6安装完成,

然后进安装目录~\Adobe\Adobe Flash Builder 4.6\utilities运行Adobe Flash Builder 4.6 Plug-in Utility.exe,

最后根据安装向导设置插件安装到myeclipse10的目录~\Genuitec\MyEclipse 10,必须确保该目录下包含dropins文件

如此即可完成最新的Adobe Flash Builder 4.6插件的安装,最后启动myeclipse10,界面也随之变成中文,但有时候也会有出问题,此时进入到~\Genuitec\MyEclipse 10\Uninstall Adobe Flash Builder 4.6 Plug-in目录,运行Uninstall Adobe Flash Builder 4.6 Plug-in.exe卸载插件,重新安装,第二次必定成功,myeclipse10对插件的兼容性没有eclipse的好,千万不可尝试按 eclipse的配置去暴力修改里面的参数,否则极有可能再也起不来了!


四.Myeclipse10优化

最后谈谈如何优化Myeclipse10

1、window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven,将Maven JDK改为电脑上安装的JDK,即不使用myeclipse提高的JDK
登记add按钮,选择你的电脑上的JDK即可(注意:不是JRE,我的值为:Java6.014)

2、window-preferences-MyEclipse Enterprise Workbench-Matisse4Myeclipse/Swing,将Design-time information(dt.jar) location 改用电脑安装的JDK的dt.jar
(即不使用myeclipse提供的dt.jar,我的值为:C:\Java6.014\lib\dt.jar)

经过以上的优化,myeclipse的启动时间可以减少2/3,Tomcat的启动速度可以减少1/2(视具体情况而定)

第一步: 取消自动validation
validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下!

取消方法:
windows–>perferences–>myeclipse–>validation
除开Manual下面的复选框全部选中之外,其他全部不选
手工验证方法:
在要验证的文件上,单击鼠标右键–>myeclipse–>run validation

 

第二步:取消Eclipse拼写检查
1、拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处

windows–>perferences–>general–>validation->editors->Text Editors->spelling

 

第三步:取消myeclipse的启动项
myeclipse会有很多的启动项,而其中很多我们都用不着,或者只用一两个,取消前面不用的就可以

windows–>perferences–>general–>startup and shutdown  (详见底端介绍)

 

第四步:更改jsp默认打开的方式
安装了myeclipse后,编辑jsp页面,会打开他的编辑页面,同时也有预览页面,速度很慢,不适合开发。所以更改之windows–>perferences–>general–>editors->file associations

在下方选择一种编辑器,然后点击左边的default按钮

 

第五步:更改代码提示快捷键(不建议使用增强提示,使用Ctrl+/在自己需要的时候提示更佳)

现在的代码提示快捷键,默认为ctrl+space,而我们输入法切换也是,所以会有冲突。谁叫myeclipse是外国人做的呢。。根本不需要切换输入法.

windows–>perferences–>general–>Keys

更改 content assist 为 alt+/

同时由于alt+/已经被word completion占用,所以得同时修改word completion的快捷键值

好了,现在的速度及方便性是不是提高了。

 

第六步: 更改内存使用文件

1、打开 myeclipse.ini

  1. -vmargs  
  2. -Xms256m  
  3. -Xmx1024m     
  4. -XX:PermSize=128M  
  5. -XX:MaxPermSize=256M  
把下面的那个 -XX:MaxPermSize 调大,比如 -XX:MaxPermSize=512M,再把 -XX:PermSize 调成跟 -XX:MaxPermSize一样大
原因:大家一定对这个画面很熟悉吧:

几乎每次 eclipse 卡到当都是因为这个非堆内存不足造成的,把最大跟最小调成一样是因为不让 myeclipse 频繁的换内存区域大小

注意:XX:MaxPermSize 和 Xmx 的大小之和不能超过你的电脑内存大小

以下是有关内存的一些知识扩展:

1.堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。
2.堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。
3.非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
4.JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间 有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G- 3G),而64bit以上的处理器就不会有限制了。
举例说明含义:
-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:PermSize=64MB 最小尺寸,初始分配 
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize缺省值和-server -client选项相关。-server选项下默认MaxPermSize为64m  -client选项下默认MaxPermSize为32m
PS:不同厂家的jdk垃圾回收算法不一样。在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率。


第七步: 修改Struts-config.xml文件打开错误

有时点击myeclipse里的struts的xml配置文件,会报错:

Error opening the editorUnable to open the editor ,unknow the editor id…..

把这个窗口关闭后才出正确的xml文件显示,这个我们这样改:

windows–>perferences–>general–>editors->file associations选择*.xml,选择myeclipse xml editor点default,ok

 

第八步: 取消自动验证,该成手动验证

windows-->perferences-->myeclipse-->validation

将Build下全部勾取消,保留Manual(手动) 如果你需要验证某个文件的时候,我们可以单独去验证它。方法是,在需要验证的文件上( 右键 -> MyEclipse -> Run Validation   

 

第九步: 取消Maven更新(启动更新)

Window > Preferences > Myeclipse Enterprise Workbench > Maven4Myeclipse > Maven> 禁用Download repository index updates on startup







到此有关Myeclipse10的体验介绍完毕,欢迎大家拍砖,转载请注明出处!


转载于 Myeclipse10下载,安装,破解,插件,优化介绍(CSDN首发)  http://blog.csdn.net/shimiso/article/details/7061000

posted @ 2011-12-22 09:24 王健 阅读(2151) | 评论 (0)编辑 收藏
客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解。由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算是解决了跨域问题。便记录下来,以供查阅。 
        jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的。
        真实案例:
        $.ajax({ 
            async:false, 
            url: 'http://www.mysite.com/demo.do',  // 跨域URL
            type: 'GET', 
            dataType: 'jsonp', 
            jsonp: 'jsoncallback', //默认callback
            data: mydata, 
            timeout: 5000, 
            beforeSend: function(){  //jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
            },
            success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 
                if(json.actionErrors.length!=0){ 
                    alert(json.actionErrors); 
                } 
                genDynamicContent(qsData,type,json); 
            }, 
            complete: function(XMLHttpRequest, textStatus){ 
                $.unblockUI({ fadeOut: 10 }); 
            }, 
            error: function(xhr){ 
                //jsonp 方式此方法不被触发
                //请求出错处理 
                alert("请求出错(请检查相关度网络状况.)"); 
            } 
        });

        注意:
        $.getJSON(" http://www.mysite.com/demo.do?name1="+value1+"&callback=?", 
            function(json){ 
                if(json.属性名==值){ 
                    // 执行代码 
                } 
        }); 
    这种方式其实是上例$.ajax({..}) api的一种高级封装,有些$.ajax api底层的参数就被封装而不可见了。

    在服务端通过callback= request.getParameter("callback") 得到jQuery端随后要回调的jsonp32440980
    然后返回类似:"jsonp32440980("+要返回的json数组+")"; 
    jquery就会通过回调方法动态加载调用这个:jsonp32440980(json数组);
    这样就达到了跨域数据交换的目的. 
    jsonp的最基本的原理是:动态添加一个是一致的(qq空间就是大量采用这种方式来实现跨域数据交换的) 。JSONP是一种脚本注入(Script Injection)行为,所以也有一定的安全隐患。
    注意:jquey是不支持post方式跨域的。
    这是因为虽然采用post +动态生成iframe是可以达到post跨域的目的(有位js牛人就是这样把jquery1.2.5 打patch的),但这样做是一个比较极端的方式,不建议采用。也可以说get方式的跨域是合法的,post方式从安全角度上被认为是不合法的,万不得已还是不要post,client端跨域访问的需求看来也引起w3c的注意了,看资料说html5 WebSocket标准支持跨域的数据交换,应该也是一个将来可选的跨域数据交换的解决方案。
参考:http://www.jb51.net/article/21213.htm

posted @ 2010-09-29 11:27 王健 阅读(144) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2010-09-29 11:27 王健 阅读(2471) | 评论 (0)编辑 收藏