import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.internal.Workbench;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject; /**
* Our sample action implements workbench action delegate.
* The action proxy will be created by the workbench and
* shown in the UI. When the user tries to use the action,
* this delegate will be created and execution will be
* delegated to it.
* @see IWorkbenchWindowActionDelegate
*/
@SuppressWarnings({ "restriction" })
public class RuntimePower implements IWorkbenchWindowActionDelegate {
// private IWorkbenchWindow window;
/**
* The constructor.
*/
public RuntimePower() {
} /**
* The action has been activated. The argument of the
* method represents the 'real' action sitting
* in the workbench UI.
* @see IWorkbenchWindowActionDelegate#run
*/
public void run(IAction action) {
try {
String path = getProjectPath();
IProject myProject = getCurrentProject();
path = path + myProject.getFullPath();
runProc("/chai/run_java.sh");
String command = path + "/Debug" + myProject.getFullPath();
runProc("/chai/run.sh" + " " + command); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static String runProc(String para) throws IOException
{
Process p = Runtime.getRuntime().exec(para);
String pid = getPID(p);
return pid;
}
public static String getPID(Process p) throws IOException
{
BufferedReader br = new
BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
line = br.readLine();
return line;
}
public static String getProjectPath()
{
String path = null;
path = Platform.getLocation().toString();
return path;
} 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();
}else if (element instanceof ICElement){
ICProject cProject = ((ICElement)element).getCProject();
project = cProject.getProject();
} }
return project;
}
/**
* Selection in the workbench has been changed. We
* can change the state of the 'real' action here
* if we want, but this can only happen after
* the delegate has been created.
* @see IWorkbenchWindowActionDelegate#selectionChanged
*/
public void selectionChanged(IAction action, ISelection selection) {
} /**
* We can use this method to dispose of any system
* resources we previously allocated.
* @see IWorkbenchWindowActionDelegate#dispose
*/
public void dispose() {
} /**
* We will cache window object in order to
* be able to provide parent shell for the message dialog.
* @see IWorkbenchWindowActionDelegate#init
*/
public void init(IWorkbenchWindow window) {
// this.window = window;
}
}

其中,run_java.sh如下:

 #!/bin/bash
java -jar /chai/Monitor.jar &
echo $!

Monitor.jar 为用jfreechart写的能耗时序图代码,打包而成

run.sh如下:

 #!/bin/bash
$ &
echo $!

$1表示传入给run.sh的第一个参数,如 run.sh "echo helloworld"

查看interface 可以查找:http://help.eclipse.org

以下内容转自:http://blog.csdn.net/u010436741/article/details/9132925

对于CDT的安装:

解决方法:

1. 下载地址:http://www.eclipse.org/cdt/downloads.php

我下载的是最新版本cdt-master-8.1.2.zip

2. 安装到eclipse上

步骤:Eclipse ->Help -> Install New Software -> 点击ADD添加 -> 名称填写CDT ,地址那里选择Archive,然后选择已下好的cdt-master-8.1.2.zip   -> OK下一步下一步…最后重启Eclipse

当要在其他按钮里触发获取项目,或者获取Package Explorer里当前选项时,可以如下:

IStructuredSelection structured =

(IStructuredSelection)PlatformUI.getWorkbench().getActiveWorkbenchWindow()

.getSelectionService().getSelection("org.eclipse.jdt.ui.PackageExplorer");

//或者 "org.eclipse.ui.navigator.ProjectExplorer"

Object selected = structured.getFirstElement();

if(selected instanceof IResource){

IProject project = ((IResource)selected).getFirstElement();

eclipse插件开发--获取当前项目路径的更多相关文章

  1. asp.net 获取当前项目路径

    方法一://获取当前项目的路径System.AppDomain.CurrentDomain.BaseDirectory.ToString();   // 得到的是当前项目的根目录取的值:F://Pro ...

  2. Java获取web项目路径

    File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...

  3. eclipse中的web项目路径和发布好的项目路径

    现在企业开发中,我们都会创建一个javaWeb工程,在eclipse中指的是新建一个dynamic web project,创建完工程之后,我们在IDE中大体看到如下的工程目录: 我们主要关心的文件夹 ...

  4. java获取当前项目路径System.getProperty("user.dir")

    System.getProperty("user.dir") 就是项目的文件夹绝对路径

  5. springMVC 获取本地项目路径 及后整理上传文件的方法

    String path=request.getSession().getServletContext().getRealPath("upload/img/product"); // ...

  6. javascript 获取当前部署项目路径

    javascript 获取当前部署项目路径 ========================================= javascript获取当前部署项目路径: 主要用到Location 对 ...

  7. 将Maven项目转换成Eclipse支持的Java项目

    当我们通过模版(比如最简单的maven-archetype-quikstart插件)生成了一个maven的项目结构时,如何将它转换成eclipse支持的java project呢? 1. 定位到mav ...

  8. 获取web项目的绝对路径的方法总结

    一.用Jsp获取 1.获取文件的绝对路径 String file="文件";(例如:data.mdb) String path=application.getRealPath(fi ...

  9. java web项目获取项目路径

    注意:有时获取到的项目路径后再+“自定义路径后” 路径不可用,这时要看下项目里自定义路径是不是空文件夹,如果是空文件夹则调试和运行时文件夹不会编译到部署文件里. 1.方法一 调试时只能获取eclips ...

随机推荐

  1. 在线调试和演示的前端开发工具------http://jsfiddle.net/

    在线调试和演示的前端开发工具------http://jsfiddle.net/

  2. lvs之ip-tun(ip隧道)技术的学习与实践

    1.配置测试环境 修改IP windows 200.168.10.4 lvs server  ip:200.168.10.1 因为IP隧道模式只需要一个网卡  所以就停掉其他网卡 web server ...

  3. navicat连接oracle报错ORA-12737: Instant Client Light: unsupported server character set CHS16GBK”

    原文如下http://blog.163.com/cp7618@yeah/blog/static/7023477720142154449893/?COLLCC=1318255100& 这个工具可 ...

  4. 二模 06day2

    很长时间没更新有意义的题目了呢,这是一套题撒,于是乎我便开心的边刷题边发题解了撒. 第一题: interval 比较好玩的一题撒, 分分钟过了, 就是模拟贪吃蛇但是没有食物(嗯,只要你判断冲突). 整 ...

  5. 用JAVA代码实现验证邮箱地址是否符合

    public class Test{ public static void main(String[] args){ Test t = new Test(); String email = " ...

  6. Mac 下 Chrome 浏览器 快捷键

    ⌘-Option-I 打开“开发人员工具”. ⌘-Option-J 打开“JavaScript 控制台”. ⌘-Option-U 打开当前网页的源代码. 转自: http://www.harbin-s ...

  7. Compare Strings

    Compare two strings A and B, determine whether A contains all of the characters in B. The characters ...

  8. volatile关键字

    [本文链接] http://www.cnblogs.com/hellogiser/p/volatile.html [分析] volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编 ...

  9. 【转】Python 代码调试技巧

    转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我 ...

  10. Java for LeetCode 199 Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...