`

eclipse 问题

阅读更多

 

一、 eclipse 打不开

大概是内存不够

 

文件 eclipse.ini ,红色部分改小即可

 

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-Dsun.lang.ClassLoader.allowArraySyntax=true

 

------------------------------------------------------------------------------------

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-Dsun.lang.ClassLoader.allowArraySyntax=true

二、 eclipse.ini 简介

Eclipse的启动由$ECLIPSE_HOME/eclipse.ini控制,如果$ECLIPSE_HOME 没有被定义,则Eclipse安装目录下的默认eclipse.ini会生效。

eclipse.ini是一个文本文件,其内容相当于在Eclipse运行时添加到 Eclipse.exe之后的命令行参数。


其格式要求:


1:所有的选项及其相关的参数必须在单独的一行之内


2:所有在-vmargs之后的参数将会被传输给JVM,所有如果所有对Eclipse 设置的参数必须写在-vmargs之前(就如同你在命令行上使用这些参数一样)

默认情况下,eclipse.ini的内容如下:

-showsplash

org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m

上面的配置表示堆空间初始大小为40M,最大为256M,PermGen最大为256M。


指定虚拟机


建议你使用eclipse.ini来指定一个确定的JVM,而不是使用默认的情况,因为很多情况下你无法确认你的Eclipse到底使用的你机器上安装的哪个JVM,使用eclipse.ini来指定使得你能指定并确认之。


下面的例子将展示如何正确的使用 -vm选项


注意-vm选项的格式有严格的要求:

1:-vm选项和它的值(路径)必须在单独的一行
2:其值必须严格地指向Java可执行文件,而不仅仅只是Java home目录。
3:-vm选项必须在-vmargs选项之前,之前已经说过,所有在-vmargs之后的选项将会直接被传递给JVM

Windows Example


-showsplash

org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Java\JDK\1.5\bin\javaw.exe
-vmargs
-Xms40m
-Xmx512m

Linux Example


在Linux操作系统中,格式和Windows中很类似


-showsplash

org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
/opt/sun-jdk-1.6.0.02/bin/java
-vmargs
-Xms40m
-Xmx512m

Mac OS X Example


指定Java 6:


-showsplash

org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java
-vmargs
-Xms40m
-Xmx512m


堆(Heap)和非堆(Non-heap)内存

按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java
虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。
简单来说堆就是Java代码可及的内存,是留给开发人员使用的;
非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法
的代码都在非堆内存中。
堆内存分配:
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;
JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配:

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值)

首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。
简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说
Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

设置VM参数导致程序无法启动主要有以下几种原因:

1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm
C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
-vm
C:\Java\jre1.6.0\bin\javaw.exe

按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:

-vmargs
-Xms128M
-Xmx512M

-XX:PermSize=64M

-XX:MaxPermSize=128M
实际运行的结果可以通过Eclipse中
“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
另外需要说明
的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
-showsplash
org.eclipse.platform

--launcher.XXMaxPermSize

256m
-vmargs
-Xms40m
-Xmx256m

其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我

觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以
这里可以把 –launcher.XXMaxPermSize和下一行使用#注释掉。

其他的启动参数。 如果你有一个双核的CPU,也许可以尝试这个参数:

-XX:+UseParallelGC
让GC可以更快的执行。


-------------------------------------------------------------------------------------------------------------------

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
下面我们一一进行回答
1. 各个参数的含义什么?

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
堆(Heap)和非堆(Non-heap)内存
按 照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx 指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)
首 先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然 可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统 下为2G-3G),而64bit以上的处理器就不会有限制了。
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理 内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
-vm
C:\Java\jre1.6.0\bin\javaw.exe
按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
其 中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区 别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把 –launcher.XXMaxPermSize和下一行使用#注释掉。

3. 其他的启动参数。 如果你有一个双核的CPU,也许可以尝试这个参数:
-XX:+UseParallelGC
让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)

 

 

 

三、 设置 MyEclipse 中 XML Editor 的 DTD 分析方式

 

大家用Eclipse插件如XMLBuddy,myeclipse的xml editor写xml文件时在没有联网的情况下有没有碰到这种情况,DTD文件分析失败?
如果DTD文件不能正常解析,那Content Assist功能就无效了. 没有Content Assist功能写XML文件非常不爽,还要去记那些语法,有可能输入时还会不小心输错.

在网上看到过相关文章说修改http://www.springframework.org/dtd/spring-beans.dtd为本地路径file:///可以解决这种问题,在这里还给出另一种解决方法,首先来看看DTD文件解析的方式:

    D O C T Y P E声明不仅包含常规的关键字和根元素名称,而且包含指示外部D T D源的关键字和D T D的位置。X M L规范定义了几种声明源的方法。声明中可以使用关键字SYSTEM 或 PUBLIC。如果使用 SYSTEM 关键字,解析器将仅根据给出的U R L寻找DTD,DTD通过U R L显式地直接定位。
    然而,如果D T D源关键字为 PUBLIC,情况就略微复杂一些。P U B L I C关键字用于声明众所周知的词汇表。例如,假设出版界已经对图书种类D T D达成了大量共识。需要根据该词汇表解析文档的应用程序可能会通过某种策略来定位D T D。如果这个D T D非常普及,应用程序或许有本地拷贝。直接使用本地拷贝可能比从We b服务器上远程下载更可取。D T D可能存放在数据库中,或者可以通过其他与应用程序相关的技术获得。如果使用P U B L I C关键字和U R I,应用程序就有机会利用自己的算法定位D T D。统一资源标识符(URI)可以是URL,也可以是一个单独的名字。

我们可以在eclipse中用已声明的"-//SPRING//DTD BEAN//EN",建立一个本地DTD连接.下面以myeclipse为例:

选择Windows -> Preferences -> MyEclipse -> Editors -> XML -> XML Catalog, 点New新建一个XML Catalog Entries,如下图:(在URI栏点browser将.dtd文件导入进来)

 

OK,搞定..来试试Content Assist功能,在XML文件中按Ctrl+Space就可以弹出提示框了(Ctrl+Space是windows输入法的快捷键,须先改为其它键).如图:

 

 

 

 

四、 org.eclipse.wst.common.component

 

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="arcadia-adam">
        <wb-resource deploy-path="/" source-path="/web"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
        <wb-resource deploy-path="/WEB-INF/lib" source-path="/build/dependency"/>
        <wb-resource deploy-path="/WEB-INF/lib" source-path="/lib"/>
        <property name="context-root" value="planet"/>
        <property name="java-output-path" value="/arcadia-adam/build/classes"/>
    </wb-module>
</project-modules>
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    eclipse问题解决

    根据提供的信息,本文将针对Eclipse使用过程中遇到的一些常见问题及其解决方案进行详细的阐述与解析,以便帮助更多开发者解决实际工作中可能遇到的技术难题。 ### Eclipse简介 Eclipse是一款免费开源的集成开发...

    解决Android7.0以上手机eclipse不输出logcat问题

    8. **升级到Android Studio**:尽管这不是解决Eclipse问题的方法,但强烈建议开发者转向Android Studio。它拥有更好的Logcat支持,以及许多其他现代开发工具和特性。 9. **阅读文档**:参考《安卓7以上版本手机不...

    解决Eclipse过期问题

    解决Eclipse过期问题,延长使用时间,不用再看烦人的缴费弹窗。将类容复制类中运行即可。

    Eclipse常见问题及解决方法

    Eclipse常见问题及解决方法 Eclipse是Java开发中最流行的IDE之一,但是在使用过程中总是会遇到一些问题,以下是解决Eclipse常见问题的方法。 1. 如何将建立 Eclipse 的快捷方式? 在桌面单击右键选择新建启动器,...

    Eclipse 增强代码提示问题解决方案

    总结来说,解决Eclipse代码提示问题的关键在于识别问题的根源,可能是插件冲突、配置错误、索引问题、JDT问题或是性能问题。通过更新、调整设置、重建索引以及优化系统性能,大多数问题都能得到解决。同时,提供的...

    Eclipse插件开发问题

    首先,问题一涉及在Eclipse调试Java应用程序时自定义启动配置界面。Eclipse允许开发者通过扩展点机制来自定义启动配置对话框。在XML配置文件中,`&lt;extension point="org.eclipse.debug.ui.launchConfigurationTabs"&gt;...

    eclipse 自动关闭的问题

    ### Eclipse自动关闭问题详解 #### 一、问题概述 在使用Eclipse开发工具的过程中,有时会遇到Eclipse无故自动关闭的情况。这种情况不仅打断了工作流程,还可能导致未保存的工作丢失,给开发者带来不便。因此,了解...

    eclipse部署tomcat 报错

    在Eclipse中部署Tomcat服务器时,可能会遇到各种问题。本文将讨论在Eclipse中部署Tomcat服务器时出现的问题和解决方案。 问题描述 在Eclipse中部署Tomcat服务器时,可能会出现各种问题。例如,在Tomcat服务器启动...

    Eclipse 设置、调优、使用(解决 卡顿 编译 占内存等问题)

    Eclipse 是一个功能强大且灵活的集成开发环境(IDE),但是如果不进行适当的设置和优化,可能会出现卡顿、内存占用过高等问题。以下是 Eclipse 设置、调优和使用的一些知识点: 一、Eclipse 启动优化 1. 减少 JVM ...

    解决eclipse .不工作问题

    2. **更新Eclipse**:有时候,问题可能源于Eclipse本身的老化或与操作系统之间的兼容性问题。尝试访问Eclipse官网下载并安装最新的稳定版本。 3. **清理工作空间**:Eclipse的工作空间可能会存储错误的配置或临时...

    解决Eclipse自动补全卡死的问题内附说明[【完整版】

    然而,当IDE出现性能问题,如Eclipse的自动补全卡死现象时,这将严重影响开发者的编程体验。本文将深入探讨如何解决Eclipse自动补全卡死的问题,帮助开发者恢复流畅的编码工作。 Eclipse是一款广泛应用的开源Java ...

    Eclipse的HTML格式化插件 Eclipse Tidy

    2. **错误检测**:Eclipse Tidy能检查HTML源码中的语法错误,如未闭合的标签、无效的属性或者非法字符等,帮助开发者及时发现并修复问题。 3. **兼容性增强**:考虑到不同浏览器之间的解析差异,Eclipse Tidy会尝试...

    eclipse笔记_itselfizg_配置_Eclipse开发工具_maven_Eclipse_

    在使用Eclipse进行Maven项目开发时,你可能会遇到的问题有: - 依赖冲突:Maven的依赖管理机制会自动解决大部分冲突,但有时仍需要手动调整依赖顺序或排除不需要的子模块。 - 缓存问题:如果Maven下载的依赖出现问题...

    eclipse卡死问题解决

    ### Eclipse卡死问题解决方案 在开发过程中,遇到IDE(集成开发环境)如Eclipse出现卡顿甚至卡死的情况是较为常见的现象。这类问题不仅影响工作效率,还可能导致代码丢失等问题。本文将详细介绍如何解决Eclipse卡死...

    关于eclipse发布web项目中遇到的问题

    Eclipse 发布 Web 项目中遇到的问题解决方案 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它支持多种编程语言和开发平台。然而,在使用 Eclipse 发布 Web 项目时,可能会遇到一些问题,这篇文章将解决...

    解决 Eclipse内存不足的问题

    这个问题通常表现为Eclipse频繁弹出对话框,提示“Java虚拟机(JVM)运行时内存不足”,影响了开发效率。本文将详细介绍如何解决Eclipse内存不足的问题。 首先,我们需要理解为什么会出现这种情况。Eclipse在启动时...

    Eclipse控制台展示字符的问题

    Eclipse 控制台展示字符的问题 Eclipse 控制台展示字符的问题是 Eclipse 开发环境中常见的一种问题。在 Eclipse 中,默认情况下,控制台最多显示 80000 字符,如果超出这个字符数,控制台将无法显示全部信息。为了...

    eclipse的中文注释缩进和大小不一致问题解决

    问题描述: eclipse的注释以中文开头时发生, 块注释星号缩小、汉字缩进, 单行注释汉字被放大 解决办法一: 1、下载eclipse-plugins....自己摸索出来的方法,本人的eclipse中文问题已经解决,特贡献出来。

    eclipse免安装绿色版

    - **调试工具**:强大的调试器可以帮助开发者追踪代码执行过程,定位并解决问题。 - **插件系统**:Eclipse的一大特色是其丰富的插件生态,可以通过安装插件扩展其功能,如Git客户端、Mylyn任务管理、PMD代码分析...

    eclipse解决内存溢出的问题

    ### Eclipse 解决内存溢出问题详解 #### 一、引言 在开发过程中,使用Eclipse作为集成开发环境(IDE)时,有时会遇到运行大型项目时出现内存溢出(OutOfMemoryError)的问题。这种情况不仅影响了开发效率,还可能...

Global site tag (gtag.js) - Google Analytics