2014-09-13 3 views
0

У меня есть среда Java на C9. Редактор Ace прекрасно его поддерживает, но для него нет настроенных систем запуска. Я создал свой собственный, который выглядит так, имя файла JavaRunner.run:Создание пользовательского Java-Runner на C9.ide (шаг 1 завершен)

// Create a custom Cloud9 runner - similar to the Sublime build system 
// For more information see http://docs.c9.io:8080/#!/api/run-method-run 
{ 
    "cmd" : ["javac", "$file", "$args"], 
    "info" : "Started to compile java file at $project_path to ${file_base_name}.class", 
    "env" : {}, 
    "selector" : "source.java" 
} 

На втором ходу, я попытался это:

{ 
    "cmd": ["javac $file_name && java $file_base_name"], 
    "info" : "In the directory of $file_path we will javac $file_name && java $file_base_name", 
    "working_dir": "$file_path", 
    "env" : {}, 
    "selector" : "source.java", 
    "shell": true 
} 

Первый пример будет делать компиляцию, но затем его не будет запускать код. Второй работает, если он запущен из командной строки, но он не будет работать в файле runner.

ответ

1

Чтобы выполнить несколько команд, вам необходимо их обернуть в оболочку bash. Вот пример того, как бегун Node.js делает это:

// This file overrides the built-in Node.js (default) runner 
// For more information see http://docs.c9.io:8080/#!/api/run-method-run 
{ 
    "cmd": [ 
    "bash", 
    "--login", 
    "-c", 
    "nvm use default > /dev/null; node ${debug?--nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454} '$file' $args" 
    ], 
    "selector": "source.js", 
    "info": "Your code is running at \\033[01;34m$url\\033[00m.\n\\033[01;31mImportant:\\033[00m use \\033[01;32mprocess.env.PORT\\033[00m as the port and \\033[01;32mprocess.env.IP\\033[00m as the host in your scripts!\n" 
} 

Это должно работать для вашего случая использования, а также.

0

Создан Java Package Builder и Бегун, протестированные на Centos 7.1 и Ubuntu 14.04.3 LTS

Пользы 'SED' разобрать '~/SRC /' из пути файла компилируется. Builder также создает каталог «~/bin» и структуру проекта для Runnner.

To Do: Разрешить ввод пользователя во время выполнения. - удалены xargs для разрешения stdin.

C9 Doc: https://docs.c9.io/docs/custom-runners

Гит Gist: https://gist.github.com/fogartyp/581e2ebc35a0c77b2cb1

ДОЛЖНЫ БЫТЬ В РАСПОЛОЖЕНИЯ ПРОЕКТА

. 
└── Packages 
    └── src 
     └── com 
      └── example 
       └── java 
        └── Main.java 

Builder:

// Create a custom Cloud9 build system - similar to the Sublime build system 
// For more information see https://docs.c9.io/custom_runners.html 
{ 
    "cmd": [ 
    "bash", 
    "-c", 
    "mkdir -p $(echo $file | sed -r \"s_/src/.*_/_g\")bin; find $(echo $file | sed -r \"s_/src/.*_/_g\")src -name '*.java' -print | xargs javac -sourcepath $(echo $file | sed -r \"s_/src/.*_/_g\")src -d \"$(echo $file | sed -r \"s_/src/.*_/_g\")bin\"" 
    ], 
    "info": "\\033[01;34mBuilding\\033[00m \\033[01;31m$project_name\\033[00m", 
    "selector": "source.java", 
    "working_dir": "$file_path" 
} 

Runner:

// Create a custom Cloud9 runner - similar to the Sublime build system 
// For more information see https://docs.c9.io/custom_runners.html 
{ 
    "cmd": [ 
    "bash", 
    "-c", 
    "java -cp $(echo $file | sed -r \"s_/src/.*_/bin_g\") $(echo $file | sed -r \"s_.*/src/__g\" | sed -r \"s_\\.java__g\" | sed -r \"s_/_._g\")" 
    ], 
    "info": "\\033[01;34mRunning\\033[00m \\033[01;31m$file_name\\033[00m\n", 
    "selector": "source.java", 
    "working_dir": "$file_path" 
}