【发布时间】:2020-06-10 08:11:05
【问题描述】:
我正在尝试从命令行使用 clair 启动 rascal,但我不明白为什么会发生这种情况:
java -cp "rascal-0.18.0.jar;clair_0.1.0.202005281059.jar;org.eclipse.cdt.core_6.11.0.202003081657.jar" org.rascalmpl.shell.RascalShell
Version: 0.18.0
INFO: detected |lib://rascal| at |jar+file:///C:/ws/rascal-0.18.0.jar!/|
INFO: detected |lib://clair| at |jar+file:///C:/ws/clair_0.1.0.202005281059.jar!/|
rascal>
但是当罐子的顺序改变时,它会失败:
java -cp "clair_0.1.0.202005281059.jar;rascal-0.18.0.jar;org.eclipse.cdt.core_6.11.0.202003081657.jar" org.rascalmpl.shell.RascalShell
Version: 0.18.0
INFO: detected |lib://clair| at |jar+file:///C:/ws/clair_0.1.0.202005281059.jar!/|
INFO: detected |lib://rascal| at |jar+file:///C:/ws/rascal-0.18.0.jar!/|
main function should either have one argument of type list[str], or keyword parameters
Usage: java -jar ...
这是类路径的正常行为吗?
注意:clair jar 不包含 org.rascalmpl.shell.RascalShell 类。
更新:从 META-INF/RASCAL.MF 中删除该行:
Main-Function: main
Main-Module: lang::cpp::IDE
解决了这个问题,所以这似乎是 Rascal(和 rascal 函数)的问题,而不是 Java(和 Java 函数)的问题。
【问题讨论】:
-
我添加了一条注释。似乎没有任何重复的类。
-
另外,我无法想象克莱尔在命令行上工作,它需要一个 CDT 版本和连接的 Eclipse 设置。我们目前不像为 jdt 那样将其重新打包到 jar 中。
-
有时我会遇到在 Eclipse Rascal 中发现 Clair 引发异常的问题。我不得不重新安装 Rascal 和 Clair。这可能与它们在类路径中的顺序有关吗?
-
不这么认为,但如果你能重现它,我们非常感谢 github repo 上的错误报告 :)