首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锡兰版本1.2格式命令

锡兰版本1.2格式命令
EN

Stack Overflow用户
提问于 2015-10-29 18:06:07
回答 2查看 46关注 0票数 1

我该如何解决这个问题:

命令:

代码语言:javascript
复制
$ ceylon format source/com/example/helloworld/*

例外:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: ceylon.language.runtime_.getMaxArraySize()Lceylon/language/Integer;
        at ceylon.collection.Hashtable.<init>(Hashtable.ceylon:35)
        at ceylon.collection.Hashtable.<init>(Hashtable.ceylon)
        at ceylon.collection.HashMap.$default$hashtable(HashMap.ceylon:31)
        at ceylon.formatter.options.Spaces$cache_.<init>(IndentMode.ceylon:62)
        at ceylon.formatter.options.Spaces$cache_.<init>(IndentMode.ceylon)
        at ceylon.formatter.options.Spaces.<init>(IndentMode.ceylon:59)
        at ceylon.formatter.options.FormattingOptions.$default$indentMode(FormattingOptions_generated.ceylon:355)
        at ceylon.formatter.options.FormattingOptions.<init>(FormattingOptions_generated.ceylon)
        at ceylon.formatter.options.loadProfile_.loadProfile(profiles.ceylon:79)
        at ceylon.formatter.options.loadProfile_.loadProfile(profiles.ceylon)
        at ceylon.formatter.options.commandLineOptions_.commandLineOptions(formattingOptions.ceylon:125)
        at ceylon.formatter.options.commandLineOptions_.commandLineOptions(formattingOptions.ceylon)
            at ceylon.formatter.run_.run(run.ceylon:285)
   ...

我想我得重新安装格式化程序。但是哪种版本呢?

没有任何理由,以下命令可以工作:

ceylon run ceylon.formatter source/com/example/helloworld/*.ceylon

区别在哪里,我怎样才能解决。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-29 19:38:07

ceylon.language.runtime曾经是用手写的Java代码实现。在这段代码中,getMaxArraySize()在本应返回long时意外地返回了ceylon.language.Integer。这起作用了,但并不完全正确。

然后,由于在锡兰1.2中提供了本机支持,runtime (以及其他一些对象)被重写作为本地锡兰代码。由于这是由锡兰编译器转换为Java的,所以这个方法现在得到正确的返回类型long。新编译的模块现在将调用此方法,但针对旧ceylon.language编译的代码仍将尝试调用返回ceylon.language.Integer的方法,这将导致NoSuchMethodError

这里发生的事情似乎是ceylon format运行的是ceylon.formatter/1.1.0,它是针对ceylon.language/1.1.0编译的,现在不能使用ceylon.language/1.2.0运行。ceylon run ceylon.formatter可能出于某种原因运行ceylon.formatter/1.2.0,这是可行的。

我不知道你需要做什么才能解决这个问题。我改变了ceylon format插件最近的工作方式,所以您可能需要删除旧的ceylon format脚本(我认为是.ceylon/bin中的ceylon-formatceylon-format.bat文件)。希望新的已经在那里,准备接管。

票数 4
EN

Stack Overflow用户

发布于 2015-10-29 22:12:43

试试ceylon plugin uninstall format,看看这是否能解决问题。

第二个选择是说ceylon plugin install ceylon.formatter/1.2.0

ceylon format不起作用的原因是因为您安装的ceylon format将查找不再兼容的硬编码版本1.1,而ceylon run将查找与您正在使用的当前锡兰版本兼容的任何版本。(因此它将同时找到1.1.0和1.2.0,但它会丢弃1.1.0,因为它不兼容,因此自动选择1.2.0 )

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33421554

复制
相关文章

相似问题

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