2017-02-03 6 views
1

今日、私はMacBookにintelliJ ceylon IDEをインストールしました。私のプロジェクトをコンパイルすると、次のメッセージが表示されます。ceylon run:モジュールのデフォルト/バージョン化されていません。

/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 

コードは他のコンピュータ(ウィンドウ7)でも正常に実行されます。

フォルダ 'モジュール' は、次のものが含まれます

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

と私のビルド構成looks as follows

この

はIntelliJのプラグインが正しく、「デフォルト」モジュールを処理していないとバグかもしれません(ファイルソース/ 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; 
    } 
} 

答えて

3

提供されたスクリーンショットは、実行コンフィギュレーションがIntelliJモジュール(Use classpath of module[none]に設定されています)に基づいていないことを示しています。これは、modulesディレクトリが存在するプロジェクトフォルダ内でではなく、が実行されることを意味します。そのディレクトリにはコンパイルされたコードが含まれており、は、defaultモジュールの実行を要求すると、そのディレクトリを検索します。

一般に、実行コンフィギュレーションを手動で作成しないでください。実行可能関数の名前の隣にある緑色の矢印をクリックすると、Ceylon IDEは自動的にを作成し、に正しい実行コンフィギュレーションを設定します。

Run Ceylon function

Use classpath of moduleラベル]フィールドにコードが含まれているIntelliJのモジュールを選択するだけで、既存の実行構成を修正するには。

Ceylon IDE for IntelliJを使い始める方法の詳細については、getting started guideも参照してください。

+1

新しい、正しい実行コンフィギュレーションを自動的に作成することを選択した場合は、あとで(または前に、混乱させないように)古い、障害のある実行コンフィギュレーションを削除してください。 'Run' - > 'Edit configurations'のようにします。 – loldrup

0

です。デフォルトのモジュールは、通常のモジュールよりも限られているため、あまり使用しない傾向があります。

モジュールを作成し、コードをモジュールに移動してみてください。おそらく問題を解決するでしょう。もしそうなら、ここでこのバグを修正するための問題を開くことができます:https://github.com/ceylon/ceylon-ide-intellij/issues/new

+0

この説明は私にとってかなり投機的なようです。プロジェクトの構成にはるかに問題があるように見えます。 –

0

this questionでは、最初の答えは新しいモジュールの作成方法を示しています。

  • 新しいプロジェクトに始まり、あなたはおそらくあなたのモジュールのための複雑なネストされた名前階層を必要としません:

    は、私はその答えにいくつかのコメントがあります。モジュール名にピリオド(例:my.ceylon.example)を使用している場合は、mainのような単純な名前を使用することをお勧めします。
  • 新しいモジュールを作成するときは、(実行可能なユニット名)を指定するように求められます。このフィールドの目的は、IntelliJにプログラムの起動時に実行する必要があるモジュールのクラスを伝えることです。言い換えれば、これはあなたのプログラムへのエントリーポイントになります。これに適した名前はmainでもかまいません。
  • セイロンプロジェクトはモジュールに分割され、モジュールはパッケージに分割され、パッケージはクラスとトップレベルの機能に分割されます。モジュールを作成すると、このモジュールの下にパッケージが自動的に作成されます。このモジュールの下にあるコードファイルのパスは 'source/moduleName/packageName'になります。新しいモジュールを作成するときに、モジュール内の最初のパッケージの名前を指定することはできません。代わりに、パッケージにはモジュール名と同じ名前が付けられます。したがって、 'main'という名前のモジュールは、このパスを持っています:source/main/mainはそのコードファイルのパスです。
  • 新しいモジュールフォルダ(たとえば、source/main/main)に3つの新しいファイルが作成されます。先に選択した 'Runnable unit name'の名前を付けたファイルを探します。 あなたのコードはにあるはずです。また、あなたのコードには、 'Runnable unit name'として選択したのと全く同じ名前のクラスがあるはずです
  • 答えは空想用語 '実行可能ユニット'を使用していました。これはセイロンコードを含むファイルを意味しています。
  • 新しいモジュールを実行しようとする前に、古い 'default'モジュールを含むファイルを削除してください。
  • モジュール名は大文字で始めることはできません。
  • modules/は、コンパイルされたコードが出力される出力ディレクトリです。プロジェクトが作成されると、source/のコードから自動的に再作成されます。
1

ここではプロジェクトの設定に何らかの混乱があるようです。検索されているリポジトリのリストに注意してください。

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 

私はそのリストの2番目のエントリとしてフォームyour-project-dir/modulesのレポを見ることを期待するが、それはありません。

つまり、ceylon runは、.carがコンパイルされているmodulesディレクトリにありません。だから問題は、なぜそのレポがリストにないのかということです。

Project Structure> Modules> Ceylon> Repositoriesには何が表示されますか?

関連する問題