首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类路径顺序更改时无法启动主类

类路径顺序更改时无法启动主类
EN

Stack Overflow用户
提问于 2020-06-10 08:11:05
回答 2查看 112关注 0票数 1

我试图从命令行开始使用clair,但是我不明白为什么会发生这种情况:

代码语言:javascript
复制
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>

但当罐子的顺序发生变化时,它就失败了:

代码语言:javascript
复制
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中删除一行:

代码语言:javascript
复制
Main-Function: main
Main-Module: lang::cpp::IDE

解决了这个问题,所以这似乎是Rascal (和流氓函数)的问题,而不是Java (和Java函数)的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-10 09:27:17

如果有命令行参数,RascalShell的main函数的行为会有所不同,并且取决于它在类路径中找到的第一个RASCAL.MF文件。

如果存在参数,则将该参数作为模块名加载,并调用该模块中的主函数,将其传递给另一个命令行parameters

  • Otherwise,它将启动REPL

  • ,但是:如果它在类路径中找到的第一个RASCAL.MF文件有一个主模块和一个主函数,那么它总是加载该模块并启动其主函数。

我怀疑后者正在起作用:类路径的顺序更改了RASCAL.MF文件,因此REPL没有启动,但是一些模块正在加载,而没有找到。不过,我不确定,因为我不能从这里设置断点;-)

票数 1
EN

Stack Overflow用户

发布于 2020-06-10 09:26:13

我认为您在REPL中发现了两个bug:

  1. 第二种行为是我们尝试运行Main-Function definition的错误,这也是在终端中用于IDE插件的。我认为问题/bug是,我们使用与ide集成点相同的命令行配置,我们可能需要为此添加一个单独的标记。
  2. 我们应该提供一种方法来说明我们要运行哪个RASCAL.MF,因为现在它只是选择它看到的第一个RASCAL.MF (流氓也有一个RASCAL.MF文件)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62298778

复制
相关文章

相似问题

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