1

通过右键单击一个函数并选择“运行函数名称”,我设法在“演练”存储库中编译和执行 Cyelon 代码。

我还尝试创建自己的 Ceylon 项目(名为 POSTtoFile)并查看是否可以从那里执行“Hello World”功能。我不能。我想我必须为我的项目创建某种构建配置,但我不知道在这些表单字段中填写什么:

在此处输入图像描述

安装 Ceylon IDE for IntelliJ指南对这个问题完全没有提及。如果它包含一个名为“制作你的第一个锡兰”项目的部分,那就太好了。令人尴尬的是,该文档的所有以前的读者都必须事先知道这些内容。所以我在这里!唯一的例外。

在“Ceylon 模块”下拉菜单中,有一个选项,名为module default "unversioned". 我尝试选择那个,然后单击“运行”->“运行 POSTtoFile”。我得到了这个输出:

"C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dceylon.system.repo=C:\Users\Jon\.IdeaIC2016.3\config\plugins\CeylonIDEA\classes\embeddedDist\repo -Didea.launcher.port=7536 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.3\bin" -Dfile.encoding=windows-1252 -classpath "C:\Users\Jon\.IdeaIC2016.3\config\plugins\CeylonIDEA\classes\embeddedDist\lib\ceylon-bootstrap.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.redhat.ceylon.launcher.Bootstrap run --run "" default/unversioned
ceylon run: Module default/unversioned not found in the following repositories:
 C:\Users\Jon\.IdeaIC2016.3\config\plugins\CeylonIDEA\classes\embeddedDist\repo
 C:\Users\Jon\Auchitect\POSTtoFile\modules
 C:\Users\Jon\.ceylon\cache
 https://modules.ceylon-lang.org/repo/1
 [Maven] Aether
 [NPM] npm

Process finished with exit code 1

编辑:

从下面的屏幕截图中可以看出,IntelliJ 窗口底部没有工具栏,也没有看到名为“Ceylon 问题”的工具窗口:

在此处输入图像描述

至于你的其他问题:

  • “模块”文件夹为空
  • 当我单击时,IntelliJ 似乎可以工作 Build>Rebuild Project。这是输出:

在此处输入图像描述

  • 这些是我的版本号:

在此处输入图像描述

  • 当我将以下代码放入我的main.ceylon文件中时:

    共享 void hello() { print("Hello , World!"); }

(抱歉,堆栈溢出不会将其格式化为代码,即使我在每行前面有 4 个空格)

我得到功能左侧的绿色箭头hello,但是我无法单击它。它说“这里什么都没有”:

在此处输入图像描述

编辑 2:我尝试将源代码文件 ( main.ceilon) 从根目录 ( POSTtoFile) 移动到源目录 ( POSTtoFile/source)。然后我点击Run-> Run 'POSTtoFile'

这给了我以下新输出:

"C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dceylon.system.repo=C:\Users\Jon\.IdeaIC2016.3\config\plugins\CeylonIDEA\classes\embeddedDist\repo -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.3\bin" -Dfile.encoding=windows-1252 -classpath "C:\Users\Jon\.IdeaIC2016.3\config\plugins\CeylonIDEA\classes\embeddedDist\lib\ceylon-bootstrap.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.redhat.ceylon.launcher.Bootstrap run --run "" default/unversioned
ceylon run: String index out of range: 0
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
 at java.lang.String.charAt(String.java:658)
 at ceylon.modules.api.runtime.AbstractRuntime.invokeRun(AbstractRuntime.java:53)
 at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:105)
 at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:101)
 at ceylon.modules.Main.execute(Main.java:69)
 at ceylon.modules.Main.main(Main.java:42)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.jboss.modules.Module.run(Module.java:308)
 at org.jboss.modules.Main.main(Main.java:487)
 at ceylon.modules.bootstrap.CeylonRunTool.run(CeylonRunTool.java:292)
 at com.redhat.ceylon.common.tools.CeylonTool.run(CeylonTool.java:547)
 at com.redhat.ceylon.common.tools.CeylonTool.execute(CeylonTool.java:423)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at com.redhat.ceylon.launcher.Launcher.runInJava7Checked(Launcher.java:108)
 at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:38)
 at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:31)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at com.redhat.ceylon.launcher.Bootstrap.runVersion(Bootstrap.java:162)
 at com.redhat.ceylon.launcher.Bootstrap.runInternal(Bootstrap.java:117)
 at com.redhat.ceylon.launcher.Bootstrap.run(Bootstrap.java:93)
 at com.redhat.ceylon.launcher.Bootstrap.main(Bootstrap.java:85)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Process finished with exit code 2

这是的内容main.ceilon

shared void hello() {
    print("Hello , World!");
}

编辑 3:

将内容更改为以下内容后main.ceilon

void hello() {
    print("Hello, World!");
}

hello();

我在做Run->时得到这个输出Run 'POSTtoFile'

在此处输入图像描述

现在突然间我Ceylon problems在底部工具栏中有了按钮!它说我有三个问题:

incorrect syntax: no viable alternative at token end of file.
missing declaration or argument name.
not an annotation constructor: hello

不过,我不明白为什么会出错,因为我的代码直接来自Tour of Ceylon

4

1 回答 1

2

同意,文档缺少“IntelliJ 入门”部分,我将在本周解决这个问题。

以下是在 IntelliJ 中运行简单项目所需的步骤。

通过创建一个新项目File > New > Project并选择Ceylon类别。

新锡兰项目

单击Next并选择是否要在 JVM、JS 或两者上编译/运行项目:

Ceylon 项目向导:选择目标平台

单击Next两次,输入项目名称并单击Finish。您的项目现在已准备好托管新的 Ceylon 代码:

项目结构

在 Project 视图中,您可以看到一些现有的文件和文件夹:

  • .ceylon包含可被 CLI 工具重用的内部配置,您不必在大多数情况下直接修改它。
  • modules是将编译 Ceylon 模块的输出目录。
  • resource包含资源
  • source包含源模块

要将 Ceylon 代码添加到此项目中,您可以将文件直接放在文件source夹下以将它们添加到default模块中,或者创建一个新模块并将源文件添加到此模块中。在这两种情况下,.ceylon文件都必须source文件夹中,而不是直接在项目文件夹中。

  • 要将文件添加到default模块,请右键单击source文件夹并选择New > Ceylon File/Declaration,输入名称(例如run)并单击OK
  • 要创建新模块,请右键单击source文件夹并选择New > Ceylon Module,输入名称 like my.ceylon.example,如果不喜欢则调整版本1.0.0,将可运行单元名称设置为 likerun并单击OK。将创建新文件夹 ( my/ceylon/example),以及模块描述符 ( module.ceylon)、包描述符 ( package.ceylon) 和可运行单元 ( run.ceylon)。

此时,Ceylon Problems底部工具栏中应出现一个标题为工具窗口,表明 IDE 现在知道该项目包含 Ceylon 代码并且已正确配置:

锡兰问题视图

现在项目已经建立,是时候实际添加代码了:)。打开run.ceylon并添加以下代码:

shared void run() {
    print("hello");
}

左侧装订线中将出现一个绿色箭头,单击该箭头以运行或调试该run功能:

运行锡兰函数

点击Run 'run',这将自动创建运行配置,构建项目并打印hello

运行文件打印“你好”

关于你的最后一个错误:

不正确的语法:在文件的标记末尾没有可行的替代方案。

就像 Java 及其main()方法一样,当您在 Ceylon 中声明一个可运行函数时,您不必实际手动调用它。Ceylon runner 会为您完成(IDE 或ceylon run当您使用 CLI 时)。Ceylon 只接受顶级声明,而不接受语句,因此当在文件的根目录中找到此代码时会触发解析错误:

hello();

如果您已经尝试过Web IDE ,这会有点误导,因为 Web IDE 会自动将您的代码包装在底层的run函数中,因此上述语句永远不会是顶级语句。

于 2017-01-23T09:04:28.057 回答