2017-01-22 7 views
1

Мне удалось скомпилировать и выполнить код Cyelon в 'Walkthrough' repository, щелкнув правой кнопкой мыши функцию и выбрав «Run functionName».Компиляция кода из IntelliJ

Я также попытался создать свой собственный проект Ceylon (с именем POSTtoFile) и посмотреть, могу ли я выполнить функцию Hello World. Я не мог. Я предполагаю, что я должен создать какое-то конфигурацию сборки для моего проекта, но я не знаю, что заполнить в эти поля формы:

enter image description here

Installing Ceylon IDE for IntelliJ руководства полностью молчание по этому вопросу. Было бы аккуратно, если бы он включил раздел под названием «Создание вашего первого проекта в Цейлоне». Нехорошо знать, что все предыдущие читатели этого документа, должно быть, знали это заранее. И вот я здесь! Единственное исключение.

В раскрывающемся списке «Ceylon module» существует одна опция, называемая 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 

EDIT:

Как можно видеть на скриншоте ниже, у меня нет панели инструментов в нижней части окна IntelliJ, и я не вижу окна инструмента под названием «проблемы Цейлона» :

enter image description here

Как на другие вопросы:

  • T папка 'modules' пуста
  • IntelliJ похоже работа если я нажимаю Build>Rebuild Project. Это выход:

enter image description here

  • Это мои номера версии:

enter image description here

  • Когда я ставлю ниже код в моем main.ceylon файле:

    общий void hello() { печать ("Hello, World!"); }

(извините, переполнение стека не форматировать это как код, даже если у меня есть 4 места в передней части каждой строки)

Я получаю зеленую стрелку слева от функции hello , но тогда я не могу нажать на него. Он не говорит: 'Ничего здесь':

enter image description here

EDIT 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!"); 
} 

EDIT 3:

После изменения содержания main.ceilon к этому:

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

hello(); 

я получаю этот выход при выполнении Run ->Run 'POSTtoFile':

enter image description here

и теперь все вдруг у меня есть кнопка 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.

+0

Несколько вопросов, которые помогут мне узнать, что происходит: вы видите окно инструментов с именем «Проблемы Ceylon» в нижней панели инструментов? Если да, это означает, что Цейлон правильно настроен в вашем проекте. Вы видите что-нибудь в каталоге 'modules'? (он должен быть помечен как выходной каталог). Что-нибудь изменится, если вы выполните проект Build> Rebuild? Какую версию IntelliJ и Ceylon IDE вы используете? –

+0

Если все настроено правильно, как только вы создадите файл и поместите функцию «shared» верхнего уровня без параметров в нем, зеленая стрелка должна появиться слева. Вы можете использовать его для автоматической сборки и запуска кода. –

+0

@BastienJansen Я обновил свой вопрос с ответами на ваши вопросы. Спасибо, что помогли :) – loldrup

ответ

3

Согласен, в документации отсутствует раздел «Начало работы с IntelliJ», на этой неделе я исправлю это.

Вот шаги, необходимые для запуска простого проекта в IntelliJ.

Создайте новый проект через File > New > Project и выберите категорию Ceylon.

New Ceylon project

Нажмите Next и выбрать, хотите ли Вы скомпилировать/запустить свой проект на JVM, на JS или оба:

Ceylon project wizard: choose target platforms

Нажмите Next дважды, введите имя для вашего проекта и нажмите Finish. Ваш проект теперь готов принять новый код цейлонский:

Project structure

В окне проекта вы можете увидеть некоторые существующие файлы и папки:

  • .ceylon содержит внутреннюю конфигурацию, которая может повторно использоваться инструменты CLI, вы не должны изменять его непосредственно большую часть времени.
  • modules - это выходной каталог, в котором будут скомпилированы модули Ceylon.
  • resource содержит resources
  • source содержит source modules

Чтобы добавить цейлонский код этого проекта, вы можете поместить файлы непосредственно в папке source, чтобы добавить их к default модуль или создать новый модуль и добавьте исходные файлы в этот модуль. В обоих случаях .ceylon файлов должен быть в папке source, а не непосредственно в папке проекта.

  • Чтобы добавить файл в default модуль, щелкните правой кнопкой мыши на папке и выберите sourceNew > Ceylon File/Declaration, введите имя (например run) и нажмите OK.
  • Чтобы создать новый модуль, щелкните правой кнопкой мыши на папке и выберите sourceNew > Ceylon Module введите имя, как my.ceylon.example, настроить версию, если вам не нравится 1.0.0, установить имя работоспособный блок к чему-то вроде run и нажмите OK. Будут созданы новые папки (my/ceylon/example), а также дескриптор модуля (module.ceylon), дескриптор пакета (package.ceylon) и ваш управляемый блок (run.ceylon).

В этот момент окно инструмент под названием Ceylon Problems должен присутствовать в нижней строке инструмента, указывая, что IDE в настоящее время известно, что проект содержит цейлонский код и правильно сконфигурирован:

Ceylon Problems view

Теперь, когда проект настроен, пришло время добавить код :). Открыть run.ceylon и добавьте следующий код:

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

зеленая стрелка появится в левом канаве, нажмите на эту стрелку, чтобы запустить или отладить run функция:

Run Ceylon function

Нажмите на Run 'run', это автоматически создаст конфигурацию запуска, построит проект и распечатает hello:

Running the file prints 'hello'

Относительно последней ошибки:

incorrect syntax: no viable alternative at token end of file.

Так же, как Java и его метод main(), когда вы объявляете исполняемую функцию на Цейлоне, вы не должны на самом деле назвать это вручную. Бегун Ceylon сделает это за вас (либо IDE, либо ceylon run, когда вы используете CLI).Цейлон принимает только верхнего уровня декларации, а не заявления, так что этот код вызывает синтаксическую ошибку, когда он находится в корне файла:

hello(); 

Это немного вводит в заблуждение, если вы уже пробовали web IDE, потому что web IDE автоматически обертывает ваш код в функции run под капотом, поэтому вышеприведенный оператор никогда не будет содержать toplevel.

+0

Теперь он работает, но только если я явно запускаю функцию hello. Если я просто сделаю Run -> Run -> POSTtoFile, я получаю это длинное сообщение об ошибке, которое вы можете увидеть в моем сообщении выше. Итак, если у меня нет каких-либо модулей, как я могу указать «имя исполняемого элемента» для моего проекта или мой файл main.ceylon? – loldrup

+0

нашел это :) Свойство «Runnable» в окне «Выполнить»> «Конфигурация сборки» – loldrup

 Смежные вопросы

  • Нет связанных вопросов^_^