将Rascal项目导出到JAR文件

时间:2018-05-20 13:47:39

标签: rascal

我有一个Rascal项目我想导出到JAR文件,以便像终端应用程序一样运行,因此用户只需从命令行运行JAR,而不是从Eclipse运行它。有没有办法做到这一点?我试图将其导出为常规Java项目,但我不确定如何指定诸如JAR的入口点之类的东西。

2 个答案:

答案 0 :(得分:2)

这里是当前Rascal 0.18.2的更新答案,更像菜谱。 @ davy-landman帮助我将其组合在一起。

假设您有一个非常简单的Rascal模块,您想将其部署到命令行,例如HelloWorldMain.rsc

module HelloWorldMain
import IO;
int main(int arg=1) {
    println("Hello, World!");
    return 0;
}

将其放入具有以下结构的HelloWorldMain.jar文件中:

|- src
   |- HelloWorldMain.rsc
|- META-INF
   |- RASCAL.MF

包含的RASCAL.MF文件如下所示:

Manifest-Version: 0.0.1
Project-Name: MyRascalProject
Source: src
Main-Module: HelloWorldMain
Main-Function: main

然后可以使用

调用它
java  -Xmx1G -Xss32m -cp "HelloWorldMain.jar;rascal-0.18.2.jar" org.rascalmpl.shell.RascalShell

假设自定义项和Rascal jar都在当前目录中。类路径中文件的顺序很重要。确保您调用的Java二进制文件来自JDK(而不是JRE)。这将从您的HelloWorldMain模块直接运行main()方法。

答案 1 :(得分:0)

这取决于您使用的API。

  1. 如果它们是eclipse特定的(m3的jdt子模块)或者如果它们使用的是eclipse语言服务,则必须创建一个插件和一个功能项目。这不适合胆小的人,但它有效。我会试着找一个例子。
  2. 如果你想要一个像应用程序这样的终端,你可以从网站上获取现有的unstable / stable jar,然后在那里复制你的文件,并更新rascal.mf文件,使你的子目录也包含在搜索路径中。 shell应该自动运行。
  3. 如果要从Java代码链接rascal函数,则必须做一些工作才能正确连接评估程序。 (然后做第1或第2点)
  4. 因此,如果您可以更具体地提出您的问题,我会针对您的案例做出具体答案,包括示例。

    (这个答案有点半评论/半答案,对不起)。