【发布时间】:2018-05-20 13:47:38
【问题描述】:
我有一个 Rascal 项目,我想导出到一个 JAR 文件以像终端应用程序一样运行,因此用户可以简单地从命令行运行 JAR,而不是从 Eclipse 运行它。有没有办法做到这一点?我尝试像常规 Java 项目一样导出它,但我不确定如何指定 JAR 的入口点等内容。
【问题讨论】:
标签: rascal
我有一个 Rascal 项目,我想导出到一个 JAR 文件以像终端应用程序一样运行,因此用户可以简单地从命令行运行 JAR,而不是从 Eclipse 运行它。有没有办法做到这一点?我尝试像常规 Java 项目一样导出它,但我不确定如何指定 JAR 的入口点等内容。
【问题讨论】:
标签: rascal
这是当前 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() 方法。
【讨论】:
-arg 32来覆盖默认的int arg=1绑定,
这在一定程度上取决于您使用的 API。
所以,如果您可以让您的问题更具体,我会针对您的情况做出具体的回答,包括示例。
(这个答案有点半评论/半答案,抱歉)。
【讨论】: