我试图从命令行开始使用clair,但是我不明白为什么会发生这种情况:
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不包含org.rascalmpl.shell.RascalShell类。
更新:从META/RASCAL.MF中删除一行:
Main-Function: main
Main-Module: lang::cpp::IDE解决了这个问题,所以这似乎是Rascal (和流氓函数)的问题,而不是Java (和Java函数)的问题。
发布于 2020-06-10 09:27:17
如果有命令行参数,RascalShell的main函数的行为会有所不同,并且取决于它在类路径中找到的第一个RASCAL.MF文件。
如果存在参数,则将该参数作为模块名加载,并调用该模块中的主函数,将其传递给另一个命令行parameters
我怀疑后者正在起作用:类路径的顺序更改了RASCAL.MF文件,因此REPL没有启动,但是一些模块正在加载,而没有找到。不过,我不确定,因为我不能从这里设置断点;-)
发布于 2020-06-10 09:26:13
我认为您在REPL中发现了两个bug:
Main-Function definition的错误,这也是在终端中用于IDE插件的。我认为问题/bug是,我们使用与ide集成点相同的命令行配置,我们可能需要为此添加一个单独的标记。https://stackoverflow.com/questions/62298778
复制相似问题