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"));
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, true, true, monitor);
} else {
file.create(contentStream, true, monitor);
}
}
* 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, true, true, 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();
}
}
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;
}
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插件开发学习笔记将带领我们深入了解Eclipse插件开发的方方面面。 首先,我们需要了解Eclipse插件的基础概念。在Eclipse中,插件主要由一系列的扩展点(Extension Points)组成,这些扩展点定义了插件可以...
在使用过程中,可能会遇到一些问题,如依赖冲突、插件版本不兼容等。此时,可以通过以下方式解决: - 检查 POM.xml 文件的正确性,确保所有的依赖和配置都是准确无误的。 - 更新 Maven 本地仓库,确保所有依赖项都能...
总结来说,Eclipse插件开发中的问题涉及到UI线程安全和国际化支持。正确理解和应用Eclipse的线程模型,以及理解资源加载机制,对于开发功能丰富且具有多语言支持的Eclipse插件至关重要。通过上述解决方案,开发者...
本资料包包含了从基础到高级的Eclipse插件开发教程,覆盖了开发过程中的关键知识点,旨在帮助开发者深入理解和实践Eclipse插件的开发。 首先,我们来看《Eclipse插件开发 学习笔记 第1篇 开发基础》。这一部分通常...
通过这份“Eclipse插件开发笔记源码”,开发者可以学习到如何从零开始构建Eclipse插件,包括阅读和理解源码、调试插件以及解决实际开发中遇到的问题。对于想要深入了解Eclipse平台或RCP开发的人员来说,这是一份宝贵...
随着对Eclipse插件开发的深入了解,开发者会遇到更多高级主题,如插件间的通信、插件性能优化、国际化支持等。 **3.1 插件间通信** 插件之间可以通过服务注册和查找机制进行通信。Eclipse的服务框架基于OSGi,插件...
标题中的"使用Eclipse插件开发环境构建模板"是指在Eclipse中开发自定义模板,这些模板能够帮助开发者快速生成常见的代码片段或项目结构,从而节省手动编写的时间。模板系统是Eclipse IDE的一大特色,允许用户定制...
本教程将向您介绍Eclipse插件开发的基本概念、步骤和关键知识点,旨在帮助初学者快速上手。 一、Eclipse插件体系结构 Eclipse采用插件驱动架构,每个功能模块都是一个独立的插件,这些插件通过OSGi(开放服务网关...
在使用Eclipse进行Maven项目开发时,你可能会遇到的问题有: - 依赖冲突:Maven的依赖管理机制会自动解决大部分冲突,但有时仍需要手动调整依赖顺序或排除不需要的子模块。 - 缓存问题:如果Maven下载的依赖出现问题...
Eclipse是一款广泛使用的开源集成开发环境(IDE),主要用于Java编程,同时也支持其他编程语言如C++, Python等。...在使用过程中,如果遇到任何问题,用户可以通过Eclipse的在线帮助或社区论坛寻求解答。
总的来说,Genymotion Eclipse插件_1.0.4是Android开发者提高效率的重要工具,它简化了开发和测试流程,使开发者能够更专注于应用的创新和优化。然而,随着时间的推移,确保插件和相关工具的更新以保持兼容性是非常...
为了解决这个问题,开发者社区推出了Babel Language Pack,这是一个专门用于Eclipse的汉化插件,旨在将Eclipse的界面和帮助文档翻译成中文,以便于中文用户更加便捷地使用Eclipse。本文将深入探讨BabelLanguagePack-...
### Eclipse插件开发Form编辑器的关键知识点 #### 一、Eclipse Forms简介 Eclipse Forms是一种用于创建丰富客户端界面的技术,它可以让你的应用程序在不使用Web浏览器的情况下展现出类似Web的效果。这种技术允许...
Eclipse_3.7_中文包就是为了解决这个问题,它提供了完整的汉化界面,包括菜单、工具栏、对话框、提示信息等,使得中国开发者可以更舒适地使用Eclipse进行开发工作。 - 安装汉化包通常有两种方式:通过Eclipse的...
总之,Eclipse插件_PMD是提升代码质量的利器,通过集成PMD,开发者可以在编码阶段就能发现并修正潜在问题,避免了在后期调试或维护中遇到的困扰。正确安装和配置PMD插件,结合提供的教程,可以帮助你更好地利用这个...
10. **社区支持**:由于Eclipse和Tomcat都是开源项目,它们拥有庞大的开发者社区,遇到问题时可以获取到丰富的文档和在线帮助。 总之,Eclipse Tomcat插件是Java Web开发者的得力助手,它简化了服务器管理和应用...
这个插件主要用于在Eclipse集成开发环境中方便地管理和调试Apache Tomcat服务器,版本号9.0.1表明它是针对Tomcat 9.0系列的一个版本。 描述中提到的"只需把jar拷贝到eclipse根目录plugins下即可",这是指安装此插件...
是由Sysdeo公司开发的Eclipse插件,它允许用户在Eclipse内直接管理和运行Apache Tomcat服务器,提供了诸如启动、停止、部署和调试Tomcat服务器等便捷功能。版本号“3.3.1”表示这是该插件的第3.3.1次更新,通常包含...