以编程方式运行ant:"不能使用SUN rmic"

时间:2014-07-31 13:11:56

标签: java ant rmic

我从Java类中以编程方式启动Ant:

    File buildFile= new File("buildAppl.xml");
if (!buildFile.exists()) {
    return false;
}
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_37");
p.addBuildListener(logger);
try {
    p.fireBuildStarted();
    p.init();
    ProjectHelper helper = ProjectHelper.getProjectHelper();
    p.addReference("ant.projectHelper", helper);
    helper.parse(p, buildFile);
    p.executeTarget("build");
    p.fireBuildFinished(null);
} catch (BuildException e) {
    p.fireBuildFinished(e);
    return false;
}

当我使用Exclipse调试它时,我收到以下错误:

  

X:\ update \ jTag \ build \ buildAppl.xml:114:执行此行时发生以下错误:   X:\ update \ jTag \ project \ buildAppl.xml:107:无法使用SUN rmic,因为它不可用。常见的解决方案是设置环境变量JAVA_HOME

我检查过以下内容:

  • 正确设置了环境变量JAVA_HOME和PATH。
  • eclipse首选项“Installed JREs”默认为C:\ Program Files \ Java \ jdk1.6.0_37
  • 项目属性“java.home”设置为“C:\ Program Files \ Java \ jdk1.6.0_37”(见上文)

构建文件中rmic任务的描述与此类似:

        <rmic base="${classDirClient}" debug="true" classname="x.y.z.ProcessingServiceRmiImpl">
        <classpath>
            <fileset refid="classpathClient"/>
        </classpath>
    </rmic>
    <rmic base="${classDirClient}" debug="true" classname="x.y.z.RmiXmlMessengerClient">
        <classpath>
            <fileset refid="classpathClient"/>
        </classpath>
    </rmic>

在Eclipse中以交互方式运行Ant时,它构建正常。

我可以做些什么来规避这个错误?

1 个答案:

答案 0 :(得分:0)

从Java 5开始,不再需要rmic。 Java 5及更高版本中的RMI系统可以使用动态代理而不是静态预编译的存根来运行,因此如果必须在Java 1.4或更早版本上支持客户端,则只需要rmic