首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有人使用或编写了Ant任务来将(Rhino) JavaScript编译为Java字节码?

是否有人使用或编写了Ant任务来将(Rhino) JavaScript编译为Java字节码?
EN

Stack Overflow用户
提问于 2008-10-23 21:11:52
回答 3查看 5.2K关注 0票数 7

我想使用Rhino JavaScript编译器将一些JavaScript编译成.class字节码文件,以便在项目中使用。这似乎已经存在了,因为有groovyc、netrexxc和jythonc任务,NetREXX(!)和Jython。有没有人使用或编写过这样的Ant任务,或者有人能提供一些关于如何编写的提示?

理想情况下,它应该有某种方法来解决JavaScript或Java类之间的依赖关系。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-23 22:15:25

为什么不简单地使用java task呢?

代码语言:javascript
复制
<java fork="yes" 
  classpathref="build.path" 
  classname="org.mozilla.javascript.tools.jsc.Main" 
  failonerror="true">
    <arg value="-debug"/>
        ...
    <arg value="file.js"/>          
</java>

有什么反对意见吗?

票数 5
EN

Stack Overflow用户

发布于 2010-08-25 23:14:21

我在我的项目中使用RequireJS,其中包括一个跟踪模块之间依赖关系的脚本,并将它们组合到一个JavaScript文件中。可选的是,它还可以使用Google Closure编译器缩小组合后的js文件。一旦它以这种形式出现,其中所有依赖项都包含在一个单独的js文件中,就可以使用jsc轻松地编译该文件。

下面是我的ant脚本的一段,我用它来创建一个组合的js文件,将它编译成一个类文件,然后创建一个可执行的JAR:

代码语言:javascript
复制
<target name="compile-single-js">
    <mkdir dir="${build-js}"/>

    <java classname="org.mozilla.javascript.tools.shell.Main">
        <classpath>
            <path refid="rhino-classpath"/>
            <path refid="closure-classpath"/>
        </classpath>
        <arg value="${js-build-script}"/>
        <arg value="${js-build-dir}"/>
        <arg value="name=${build-js-main-rhino-frontend-module}"/> 
        <arg value="out=${build-js-main}"/>
        <arg value="baseUrl=."/>
        <arg value="includeRequire=true"/>
        <arg value="inlineText=true"/> 
        <arg value="optimize=none"/>
    </java>
</target>

<target name="compile-single-class" depends="compile-single-js">
    <mkdir dir="${build-class}"/>

    <!-- TODO: set -opt -->
    <java classname="org.mozilla.javascript.tools.jsc.Main">
        <classpath>
            <path refid="rhino-classpath"/>
        </classpath>
        <arg value="-o"/>
        <arg value="${build-class-main-name}.class"/>
        <arg value="${build-js-main}"/>
    </java>
    <move file="${build-js}/${build-class-main-name}.class" todir="${build-class}"/>
</target>

<target name="jar-single-class" depends="compile-single-class">
    <mkdir dir="${build-jar}"/>

    <jar destfile="${build-jar-main}"
        basedir="${build-class}"
        includes="${build-class-main-name}.class">
        <manifest>
            <attribute name="Main-Class" value="${build-class-main-name}" />
        </manifest>
    </jar>
</target>

完整的构建脚本可以在here中找到。

票数 6
EN

Stack Overflow用户

发布于 2009-07-16 21:26:19

下面是我在rhino应用程序中使用的示例build.xml。如果你有很多javascript文件,你只需要不断添加更多的标签。

~:ant编译jar运行

代码语言:javascript
复制
<project>
<target name="compile">
    <mkdir dir="build/classes"/>
    <java fork="yes" 
      classpath="js.jar" 
      classname="org.mozilla.javascript.tools.jsc.Main" 
      failonerror="true">
        <arg value="-nosource"/>
        <arg value="-opt"/>
        <arg value="9"/>
        <arg value="-version"/>
        <arg value="170"/>
        <arg value="src/SwingApplication.js"/>
    </java>
    <move todir="build/classes">
        <fileset dir="src">
            <include name="**/*.class"/>
        </fileset>
    </move>
</target>
<target name="jar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/SwingApplication.jar" basedir="build/classes">
        <zipfileset src="js.jar" includes="**/*.class"/>
        <manifest>
            <attribute name="Main-Class" value="SwingApplication"/>
        </manifest>
    </jar>
</target>
<target name="run">
    <exec executable="java">
        <arg valUe="-jar"/>
        <arg value="build/jar/SwingApplication.jar"/>
    </exec>
</target>
</project>

~

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/231550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档