Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算eclipse中基于Java的工具的编译时间_Java_Eclipse - Fatal编程技术网

如何计算eclipse中基于Java的工具的编译时间

如何计算eclipse中基于Java的工具的编译时间,java,eclipse,Java,Eclipse,在我当前的项目中,我试图计算eclipse中基于Java的工具的编译时间。计算编译时间的一种方法是使用以下方法 long lStartTime = new Date().getTime(); //some tasks long lEndTime = new Date().getTime(); long difference = lEndTime - lStartTime; System.out.println("Elapsed milliseconds: " + difference); 我还

在我当前的项目中,我试图计算eclipse中基于Java的工具的编译时间。计算编译时间的一种方法是使用以下方法

long lStartTime = new Date().getTime();
//some tasks
long lEndTime = new Date().getTime();
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);

我还尝试了MetricEclipse插件,但它不会给出编译时间。我想使用一些eclipse插件工具或其他工具来计算编译时间。是否有任何eclipse插件/工具可用于计算编译时间???

尽管您询问了使用eclipse IDE计算编译时间的方法,但评论表明您愿意接受一个无头构建解决方案,只要它有效。尽管您提到您尝试了此操作但没有成功,但由于依赖项错误,如果项目设置正确,依赖项错误不应阻止您进行构建

我编写这个脚本是为了使用Eclipse的内置编译器。我用C++代码使用它,但应该仍然使用java。假设您正在使用linux。我还没有测试它的计时方面,但是你总是可以去掉那个部分,然后用

将其另存为
headlessBuild.sh
,并使用
sh headlessBuild.sh-c
sh headlessBuild.sh-r
调用它。您还可以使用
time headlessBuild.sh
调用它,以使用linux的内置命令计时器

#!/bin/sh

args=`getopt hrcs: $*`
set -- $args

if [ $? -ne 0 ]; then
  echo ""
  echo "Usage: headlessBuild {args}"
  echo ""
  echo "-c        cleans and rebuilds workspace"
  echo "-r        rebuilds workspace without cleaning (default)"
  echo ""
  exit 1
fi

currDir=$(dirname "${BASH_SOURCE[0]}")
WORKSPACE_ROOT=/home/user/workspace
nbr=0

PROJ_NAME[$nbr]='ProjectName1'
PROJ_EXE[$nbr]='ProjectName1/Debug'
TARGET[$nbr]='TargetName1.so'
nbr=$(( nbr+1 ))

PROJ_NAME[$nbr]='ProjectName2'
PROJ_EXE[$nbr]='ProjectName2/Debug'
TARGET[$nbr]='TargetName2.so'
nbr=$(( nbr+1 ))



buildType="build"
for i; do
  case "$i" in
    -c  ) buildType="cleanBuild"
          shift;
          ;;
    -r  ) buildType="build"
          shift;
          ;;
    --  ) shift; 
          break;
          ;;
  esac
done


echo ' '
echo 'BUILDING PROJECTS...'
echo ' '
STARTTIME=$(date +%s)

nbr=0
for proj in "${PROJ_NAME[@]}" ; do

    if [ "$buildType" = "cleanBuild" ]; then

        ####### ensure rebuild by deleting current target, if it exists
        name=$WORKSPACE_ROOT'/'"${PROJ_EXE[$nbr]}"'/'"${TARGET[$nbr]}"
        if [[ -f $name ]]; then
            echo '   Removing exising executable:' $name
            rm $name
        fi;
    fi;

    echo '   Building ' $proj
    eclipse -nosplash -data $WORKSPACE_ROOT --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild  -import $WORKSPACE_ROOT'/'$proj -$buildType "${PROJ_EXE[$nbr]}" > "${LOGFILENAME[$nbr]}" -vmargs -Declipse.exitdata=""
done 

ENDTIME=$(date +%s)
echo ' '
echo "Elapsed Time: $(($ENDTIME - $STARTTIME)) s"

尽管您询问了一种使用EclipseIDE计算编译时间的方法,但注释表明您愿意接受一种无头构建解决方案,只要它能够工作。尽管您提到您尝试了此操作但没有成功,但由于依赖项错误,如果项目设置正确,依赖项错误不应阻止您进行构建

我编写这个脚本是为了使用Eclipse的内置编译器。我用C++代码使用它,但应该仍然使用java。假设您正在使用linux。我还没有测试它的计时方面,但是你总是可以去掉那个部分,然后用

将其另存为
headlessBuild.sh
,并使用
sh headlessBuild.sh-c
sh headlessBuild.sh-r
调用它。您还可以使用
time headlessBuild.sh
调用它,以使用linux的内置命令计时器

#!/bin/sh

args=`getopt hrcs: $*`
set -- $args

if [ $? -ne 0 ]; then
  echo ""
  echo "Usage: headlessBuild {args}"
  echo ""
  echo "-c        cleans and rebuilds workspace"
  echo "-r        rebuilds workspace without cleaning (default)"
  echo ""
  exit 1
fi

currDir=$(dirname "${BASH_SOURCE[0]}")
WORKSPACE_ROOT=/home/user/workspace
nbr=0

PROJ_NAME[$nbr]='ProjectName1'
PROJ_EXE[$nbr]='ProjectName1/Debug'
TARGET[$nbr]='TargetName1.so'
nbr=$(( nbr+1 ))

PROJ_NAME[$nbr]='ProjectName2'
PROJ_EXE[$nbr]='ProjectName2/Debug'
TARGET[$nbr]='TargetName2.so'
nbr=$(( nbr+1 ))



buildType="build"
for i; do
  case "$i" in
    -c  ) buildType="cleanBuild"
          shift;
          ;;
    -r  ) buildType="build"
          shift;
          ;;
    --  ) shift; 
          break;
          ;;
  esac
done


echo ' '
echo 'BUILDING PROJECTS...'
echo ' '
STARTTIME=$(date +%s)

nbr=0
for proj in "${PROJ_NAME[@]}" ; do

    if [ "$buildType" = "cleanBuild" ]; then

        ####### ensure rebuild by deleting current target, if it exists
        name=$WORKSPACE_ROOT'/'"${PROJ_EXE[$nbr]}"'/'"${TARGET[$nbr]}"
        if [[ -f $name ]]; then
            echo '   Removing exising executable:' $name
            rm $name
        fi;
    fi;

    echo '   Building ' $proj
    eclipse -nosplash -data $WORKSPACE_ROOT --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild  -import $WORKSPACE_ROOT'/'$proj -$buildType "${PROJ_EXE[$nbr]}" > "${LOGFILENAME[$nbr]}" -vmargs -Declipse.exitdata=""
done 

ENDTIME=$(date +%s)
echo ' '
echo "Elapsed Time: $(($ENDTIME - $STARTTIME)) s"

您可以简单地使用ant来实现这一点

工作区中的新java项目(假设名称为ws-builder)

.classpath项目:(我的eclipse版本是Mars,这三个jar版本在旧版本中可能有所不同,但还可以)

build.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">

    <path id="task-classpath">
        <pathelement location="bin"/>
    </path>

    <taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />

    <target name="build-workspace">
        <workspaceBuild />
    </target>

</project>

右键单击build.xml>运行方式>2 Ant build>(选择)JRE(选项卡)>(选择)在与工作区相同的JRE中运行>运行

就这样。当ant完成时,您将看到持续时间。

您只需使用ant即可完成此操作

工作区中的新java项目(假设名称为ws-builder)

.classpath项目:(我的eclipse版本是Mars,这三个jar版本在旧版本中可能有所不同,但还可以)

build.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">

    <path id="task-classpath">
        <pathelement location="bin"/>
    </path>

    <taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />

    <target name="build-workspace">
        <workspaceBuild />
    </target>

</project>

右键单击build.xml>运行方式>2 Ant build>(选择)JRE(选项卡)>(选择)在与工作区相同的JRE中运行>运行


就这样。当ant完成时,您将看到持续时间。

您是否尝试过使用bash/shell脚本启动构建并使用bash/shell函数来计时?这能满足您的需要吗?@dberm22-我试图使用命令行编译整个基于Java的工具,但由于依赖性问题,它无法编译。我需要使用EclipseIDE编译工具。您是否尝试过使用bash/shell脚本启动构建并使用bash/shell函数计时?这能满足您的需要吗?@dberm22-我试图使用命令行编译整个基于Java的工具,但由于依赖性问题,它无法编译。我需要使用EclipseIDE编译工具。@dberm22-Thanx作为指针。但我没有背景来理解你的答案。你能推荐一些工具吗??我将不胜感激。首先,您使用的是Windows、Mac还是Linux?@dberm-我使用的是Windows。此脚本用于基于Linux的版本,但我相信Windows的调用/脚本会类似。@dberm22-Thanx表示努力。@dberm22-Thanx表示指针。但我没有背景来理解你的答案。你能推荐一些工具吗??我将不胜感激。首先,您使用的是Windows、Mac还是Linux?@dberm-我使用的是Windows。此脚本用于基于Linux的版本,但我相信Windows的调用/脚本会类似。@dberm22-Thanx用于此工作。Thanx用于指针。但是我找不到org.apache.ant_1.9.4.v20150430020/lib/ant.jar、org.eclipse.core.resources_3.10.1.v201507251910.jar、org.eclipse.equinox.common_3.7.0.v20150402-1709.jar和org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8。你可以在eclipse(installed dir)/plugins下找到这三个jar(版本可能不同,但如果不同则不重要),第四个是指针的jre本身.Thanx。但是我找不到org.apache.ant_1.9.4.v20150430020/lib/ant.jar,org.eclipse.core.resources_3.10.1.v201507251910.jar,org.eclipse.equinox.common_3.7.0.v20150402-1709.jar和org.eclipse.jdt.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8。你可以在eclips下找到这三个jare(installed dir)/插件(版本可能不同,但如果不同则不重要),第四个是jre本身。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">

    <path id="task-classpath">
        <pathelement location="bin"/>
    </path>

    <taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />

    <target name="build-workspace">
        <workspaceBuild />
    </target>

</project>