`

eclipse插件开发_遇到问题总结

阅读更多

1、Eclipse 中插件开发多语言的实现

为了使用 .properties 文件,需要在 META-INF/MANIFEST.MF 文件中定义:
      Bundle-Localization: plugin
这样就会自动加载 plugin.properties 文件(中文找 plugin_zh_CN.properties)
然后在 plugin.xml 文件中,将字符串替换为 %key 就可以了
建议先使用 Eclipse 的外部化字符串目录:

Bundle-Localization: OSGI-INF/l10n/plugin 

 

 

2、Eclipse 插件开发初始化隐藏某工具栏按钮

在网上找了好久都找不到解决办法,最后搜索 eclipse 安装目录,从它自己的插件里面找到样例了。样例来自 org.eclipse.jdt.ui/plugin.xml

 

复制代码

<extension
<extension point="org.eclipse.ui.perspectiveExtensions">
   <perspectiveExtension  targetID="*">
      <!-- 注意这里的 id 是 action 或 command 的 id -->
<hiddenToolBarItem    id="org.eclipse.jdt.ui.actions.OpenProjectWizard">
      </hiddenToolBarItem>
   </perspectiveExtension>  
复制代码

 

3、插件中获取 Eclipse 版本号

 

01.String sEclipseVersion = System.getProperty("osgi.framework.version");  

4、插件中获取路径

复制代码

// 得到插件所在的路径
Platform.asLocalURL(Platform.getBundle("your plugin ID").getEntry("")).getFile();

// 得到当前工作空间的路径
Platform.getInstanceLocation().getURL().getFile();

// 得到当前工作空间下的所有工程
ResourcesPlugin.getWorkspace().getRoot().getProjects();

// 得到某 PLUGIN 的路径:
Platform.getBundle("mypluginid").getLocation().
// eclipse采用osgi后好像还可以:
Activator.getDefault().getBundle().getLocation(); //前提是这个插件有Activator这个类.这个类继承了ECLIPSE的Plugin类
// eclipse采用osgi前好像好像是:
MyPlugin.getDefault().getBundle().getLocation(); //前提是这个插件有MyPlugin这个类.这个类继承了ECLIPSE的Plugin类

// 得到工作区路径:
Platform.getlocation();
// 或 ResourcesPlugin.getWorkspace(); 好像 Platform.getInstanceLocation() 也可行

// 得到ECLIPSE安装路径
Platform.getInstallLocation();

// 从插件中获得绝对路径:
AaaaPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath();

// 通过文件得到 Project:
IProject project = ((IFile)o).getProject();

// 通过文件得到全路径:
String path = ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();

// 得到整个Workspace的根:
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

// 从根来查找资源:
IResource resource = root.findMember(new Path(containerName));

// 从Bundle来查找资源:
Bundle bundle = Platform.getBundle(pluginId);
URL fullPathString = BundleUtility.find(bundle, filePath);

// 得到 Appliaction workspace:
Platform.asLocalURL(PRODUCT_BUNDLE.getEntry("")).getPath()).getAbsolutePath();

// 得到 runtimeworkspace:
Platform.getInstanceLocation().getURL().getPath();

// 从编辑器来获得编辑文件
IEditorPart editor = ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();
IEditorInput input = editor.getEditorInput();
if(input instanceof IFileEditorInput)
{
IFile file = ((IFileEditorInput)input).getFile();
}

// 获取插件的绝对路径:
FileLocator.resolve(BuildUIPlugin.getDefault().getBundle().getEntry("/")).getFile();
复制代码



 5、添加myeclipse JAVAEE Library 与User Library

IClasspathEntry myEclipseJAVAEE5 =JavaCore.newContainerEntry(new Path("melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"));
IClasspathEntry myEclipseUCITPortletDev =JavaCore.newContainerEntry(new Path("org.eclipse.jdt.USER_LIBRARY/UCITPortletDev"));

 

6、利用Ifile向项目中写文件

 

复制代码
    /**
     * jar文件输入流
     * 
@param path
     * 
@return
     
*/
    
private InputStream fileInput(File path){
        
        
try {
            FileInputStream fis
=new FileInputStream(path);
            
return fis;
        } 
catch (FileNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return null;
    }
    
    
/**
     * Adds a new file to the project.
     * 
     * 
@param container
     * 
@param path
     * 
@param contentStream
     * 
@param monitor
     * 
@throws CoreException
     
*/
    
private void addFileToProject(IContainer container, Path path,
            InputStream contentStream, IProgressMonitor monitor)
            
throws CoreException {
        
final IFile file = container.getFile(path);

        
if (file.exists()) {
            file.setContents(contentStream, 
truetrue, monitor);
        } 
else {
            file.create(contentStream, 
true, monitor);
        }

    }
复制代码

 

复制代码
        //写入自动生成portlet环境的jar包
        IContainer container = (IContainer) project;
        IProgressMonitor monitor 
= new NullProgressMonitor();
        Path autoJar
=new Path(WEBROOT+FILESEPARATOR+WEBINF+FILESEPARATOR +LIB+FILESEPARATOR+"UcitPortletDev.jar");    //项目路径
        InputStream jarIS=fileInput(new File("d:/PortletAuto.jar"));    //本地文件路径
        
        
//写入自动生成portlet环境的xml配置文件
        Path autoConfigXML=new Path("src"+FILESEPARATOR+"service_portlet.xml");    //项目路径
        InputStream XMLIS=fileInput(new File(selectConfigPath));    //本地文件路径
        
        
try {
            addFileToProject(container,autoJar,jarIS,monitor);    
//Jar
            monitor = new NullProgressMonitor();
            addFileToProject(container,autoConfigXML,XMLIS,monitor);    
//XML
        } catch (CoreException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
finally{
            
if (jarIS!=null){
                jarIS.close();
            }
            
if (XMLIS!=null){
                XMLIS.close(); 
            }
        }
复制代码

 

7、获取Eclipse当前项目

 

复制代码
public static IProject getCurrentProject(){   
        ISelectionService selectionService =    
            Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();   
   
        ISelection selection = selectionService.getSelection();   
   
        IProject project = null;   
        if(selection instanceof IStructuredSelection) {   
            Object element = ((IStructuredSelection)selection).getFirstElement();   
   
            if (element instanceof IResource) {   
                project= ((IResource)element).getProject();   
            } else if (element instanceof PackageFragmentRootContainer) {   
                IJavaProject jProject =    
                    ((PackageFragmentRootContainer)element).getJavaProject();   
                project = jProject.getProject();   
            } else if (element instanceof IJavaElement) {   
                IJavaProject jProject= ((IJavaElement)element).getJavaProject();   
                project = jProject.getProject();   
            }   
        }    
        return project;   
    }
分享到:
评论

相关推荐

    Eclipse插件开发学习笔记.pdf

    Eclipse插件开发学习笔记将带领我们深入了解Eclipse插件开发的方方面面。 首先,我们需要了解Eclipse插件的基础概念。在Eclipse中,插件主要由一系列的扩展点(Extension Points)组成,这些扩展点定义了插件可以...

    m2eclipse_for_eclipse_3.3.zip

    在使用过程中,可能会遇到一些问题,如依赖冲突、插件版本不兼容等。此时,可以通过以下方式解决: - 检查 POM.xml 文件的正确性,确保所有的依赖和配置都是准确无误的。 - 更新 Maven 本地仓库,确保所有依赖项都能...

    Eclipse插件开发问题

    总结来说,Eclipse插件开发中的问题涉及到UI线程安全和国际化支持。正确理解和应用Eclipse的线程模型,以及理解资源加载机制,对于开发功能丰富且具有多语言支持的Eclipse插件至关重要。通过上述解决方案,开发者...

    Eclipse插件开发 第1篇到第4篇 开发基础 核心技术 高级进阶 综合实例 eclipse 插件安装方法.zip

    本资料包包含了从基础到高级的Eclipse插件开发教程,覆盖了开发过程中的关键知识点,旨在帮助开发者深入理解和实践Eclipse插件的开发。 首先,我们来看《Eclipse插件开发 学习笔记 第1篇 开发基础》。这一部分通常...

    Eclipse插件开发笔记源码

    通过这份“Eclipse插件开发笔记源码”,开发者可以学习到如何从零开始构建Eclipse插件,包括阅读和理解源码、调试插件以及解决实际开发中遇到的问题。对于想要深入了解Eclipse平台或RCP开发的人员来说,这是一份宝贵...

    Eclipse 插件开发指南

    随着对Eclipse插件开发的深入了解,开发者会遇到更多高级主题,如插件间的通信、插件性能优化、国际化支持等。 **3.1 插件间通信** 插件之间可以通过服务注册和查找机制进行通信。Eclipse的服务框架基于OSGi,插件...

    使用 Eclipse 插件开发环境构建模板

    标题中的"使用Eclipse插件开发环境构建模板"是指在Eclipse中开发自定义模板,这些模板能够帮助开发者快速生成常见的代码片段或项目结构,从而节省手动编写的时间。模板系统是Eclipse IDE的一大特色,允许用户定制...

    Eclipse 插件开发 简易教程

    本教程将向您介绍Eclipse插件开发的基本概念、步骤和关键知识点,旨在帮助初学者快速上手。 一、Eclipse插件体系结构 Eclipse采用插件驱动架构,每个功能模块都是一个独立的插件,这些插件通过OSGi(开放服务网关...

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

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

    ( eclipse_zh_cn.zip ) 汉化包

    Eclipse是一款广泛使用的开源集成开发环境(IDE),主要用于Java编程,同时也支持其他编程语言如C++, Python等。...在使用过程中,如果遇到任何问题,用户可以通过Eclipse的在线帮助或社区论坛寻求解答。

    Genymotion eclipse 插件_1.0.4

    总的来说,Genymotion Eclipse插件_1.0.4是Android开发者提高效率的重要工具,它简化了开发和测试流程,使开发者能够更专注于应用的创新和优化。然而,随着时间的推移,确保插件和相关工具的更新以保持兼容性是非常...

    BabelLanguagePack-eclipse-zh_4.2.0.v20120721043402

    为了解决这个问题,开发者社区推出了Babel Language Pack,这是一个专门用于Eclipse的汉化插件,旨在将Eclipse的界面和帮助文档翻译成中文,以便于中文用户更加便捷地使用Eclipse。本文将深入探讨BabelLanguagePack-...

    eclipse插件开发form编辑器

    ### Eclipse插件开发Form编辑器的关键知识点 #### 一、Eclipse Forms简介 Eclipse Forms是一种用于创建丰富客户端界面的技术,它可以让你的应用程序在不使用Web浏览器的情况下展现出类似Web的效果。这种技术允许...

    eclipse_3.7_中文包_eclipse_汉化包_eclipse_最新最全汉化包

    Eclipse_3.7_中文包就是为了解决这个问题,它提供了完整的汉化界面,包括菜单、工具栏、对话框、提示信息等,使得中国开发者可以更舒适地使用Eclipse进行开发工作。 - 安装汉化包通常有两种方式:通过Eclipse的...

    Eclipse插件_PMD

    总之,Eclipse插件_PMD是提升代码质量的利器,通过集成PMD,开发者可以在编码阶段就能发现并修正潜在问题,避免了在后期调试或维护中遇到的困扰。正确安装和配置PMD插件,结合提供的教程,可以帮助你更好地利用这个...

    eclipse_tomcat_插件

    10. **社区支持**:由于Eclipse和Tomcat都是开源项目,它们拥有庞大的开发者社区,遇到问题时可以获取到丰富的文档和在线帮助。 总之,Eclipse Tomcat插件是Java Web开发者的得力助手,它简化了服务器管理和应用...

    net.sf.eclipse.tomcat_9.0.1.jar

    这个插件主要用于在Eclipse集成开发环境中方便地管理和调试Apache Tomcat服务器,版本号9.0.1表明它是针对Tomcat 9.0系列的一个版本。 描述中提到的"只需把jar拷贝到eclipse根目录plugins下即可",这是指安装此插件...

    com.sysdeo.eclipse.tomcat_3.3.1.rar

    是由Sysdeo公司开发的Eclipse插件,它允许用户在Eclipse内直接管理和运行Apache Tomcat服务器,提供了诸如启动、停止、部署和调试Tomcat服务器等便捷功能。版本号“3.3.1”表示这是该插件的第3.3.1次更新,通常包含...

Global site tag (gtag.js) - Google Analytics