锡兰运行:未找到模块默认/未版本

时间:2017-02-03 23:09:14

标签: ceylon

今天我在我的macbook上安装了intelliJ ceylon IDE。在编译我的项目时,我收到以下消息

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java "-Dceylon.system.repo=/Users/Laust/Library/ApplicationSupport/IdeaIC2016.3/CeylonIDEA/classes/embeddedDist/repo" -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA CE.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Users/Laust/Library/Application Support/IdeaIC2016.3/CeylonIDEA/classes/embeddedDist/lib/ceylon-bootstrap.jar:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain com.redhat.ceylon.launcher.Bootstrap run --run main default/unversioned
ceylon run: Module default/unversioned not found in the following repositories:
 /Users/Laust/Library/Application Support/IdeaIC2016.
3/CeylonIDEA/classes/embeddedDist/repo
 /Users/Laust/.ceylon/cache
 https://modules.ceylon-lang.org/repo/1
 [Maven] Aether
 [NPM] npm

Process finished with exit code 1

代码在我的其他计算机上运行正常(Windows 7)。

文件夹'modules'包含以下内容:

default
    default.car
    default.car.sha1
    default.src
    default.src.sha1

和我的构建配置looks as follows

这是我的代码(在文件source / main.ceylon中)

shared void main() {
    print("Generating pretty sweet g-code:");

    {Gcommand+} myGcommands = {
        G00( Vector3(0.0, 0.0, 0.0) ),
        G00( Vector3(9.0, 0.0, 0.0) ),
        G00( Vector3(9.0, 9.0, 0.0) ),
        G00( Vector3(0.0, 9.0, 0.0) ),
        G00( Vector3(0.0, 0.0, 0.0) )
    };

    GcodeProgram myGcodeProgram = GcodeProgram( *myGcommands );

    print(myGcodeProgram.toString());
}

"A carthesian coordinate class"
alias X => Float;
alias Y => Float;
alias Z => Float;
class Vector3(shared X x, shared Y y, shared Z z) {
}

"An abstract spec class for all G-code command classes"
abstract class Gcommand() {
    shared formal String toString();
}

"G-code command for moving in a straight line at rapid speed"
class G00( Vector3 endPoint ) extends Gcommand() {
    toString() => "G0 " + "X" + endPoint.x.string
                        + "Y" + endPoint.y.string
                        + "Z" + endPoint.z.string + "\n";
}

class GcodeProgram( Gcommand+ gcommands ) {

    variable String stringifiedGcodeProgram = "";

    shared String toString() {
        for (gcommand in gcommands) {
            stringifiedGcodeProgram = stringifiedGcodeProgram + gcommand.toString();
        }
    return stringifiedGcodeProgram;
    }
}

4 个答案:

答案 0 :(得分:3)

您提供的屏幕截图显示运行配置不基于任何IntelliJ模块(Use classpath of module设置为[none])。这意味着配置将modules目录所在的项目文件夹中运行。该目录包含已编译的代码,当您要求它运行ceylon run模块时,default将查找该目录。

一般来说,您应该避免手动创建运行配置。通过单击runnable函数名称旁边的绿色箭头,Ceylon IDE将自动创建并配置正确的运行配置。

Run Ceylon function

要修复现有的运行配置,只需在标有Use classpath of module的字段中选择包含代码的IntelliJ模块。

有关如何开始使用Ceylon IDE for IntelliJ的更多信息,另请参阅getting started guide

答案 1 :(得分:1)

这里的项目设置似乎有些混乱。请注意正在搜索的repos列表:

Module default/unversioned not found in the following repositories:
 /Users/Laust/Library/Application Support/IdeaIC2016.3/CeylonIDEA/classes/embeddedDist/repo
 /Users/Laust/.ceylon/cache
 https://modules.ceylon-lang.org/repo/1
 [Maven] Aether
 [NPM] npm

我希望看到your-project-dir/modules形式的回购作为该列表中的第二个条目,但它不存在。

也就是说,ceylon run没有查看编译的modules所在的.car目录。所以问题是为什么列表中缺少回购。

您在项目结构中看到了什么>模块>锡兰>库?

答案 2 :(得分:0)

这可能是IntelliJ插件未处理的错误"默认"模块正确。我们倾向于不使用默认模块,因为它们比常规模块更受限制。

尝试创建模块并将代码移动到该模块。这很可能会解决问题。如果是这样,您可以打开问题以修复此错误:https://github.com/ceylon/ceylon-ide-intellij/issues/new

答案 3 :(得分:0)

this question中,第一个(也是唯一的)答案讲述了如何创建新模块。

我对这个答案有一些评论:

  • 在开始新项目时,您可能不需要为模块设置复杂的嵌套命名层次结构。如果你在模块名称中使用句点(例如my.ceylon.example),你会得到它,所以我建议你坚持一个简单的名称,如main
  • 在创建新模块时,您(除其他事项外)将要求您指定“可运行的单位名称”。这个领域的目的是告诉IntelliJ你的哪个模块'它应该在启动程序时执行。换句话说,这将成为您的计划的切入点。一个合适的名称可以(也)main
  • Ceylon项目分为模块,模块分为包,而包分为类和顶级功能。创建模块时,将在此模块下自动创建包。此模块下的代码文件路径为&source; module / moduleName'。创建新模块时,您无法指定模块中第一个包的名称。相反,包的名称与模块名称相同。因此,一个名为' main'会有这条路径:source/main/main作为其代码文件的路径。
  • 在新模块文件夹(例如source/main/main)中,将创建三个新文件。找到以' Runnable单位名称命名的文件'你之前选择的。 您的代码应该进入此文件。此外,您的代码应该有一个与您选择的' Runnable单位名称完全相同的类
  • 答案使用了一个奇特的术语“可运行的单位”,他只是指含有锡兰代码的文件。
  • 请记得删除包含旧版'默认'的文件。模块,在尝试运行新模块之前。
  • 模块名称不能以大写字母开头。
  • modules/是编译代码所在的输出目录。在构建项目时,它会自动从source/中的代码重新创建。