2013-12-06 8 views
2

Я хочу выполнить эту команду «dot -Tpng overview.dot> overview.png», которая используется для генерации изображения Graphviz.как выполнить команду в scala?

Код в Скале:

Process(Seq("dot -Tpng overview.dot > overview.png")) 

Это не работает. И еще я хочу открыть это изображение в scala. Я работаю под Ubuntu. По умолчанию изображения будут открываться средством просмотра изображений. Но я типа «EOG overview.png» в терминале, он сообщает ошибку

** (eog:18371): WARNING **: The connection is closed 

Таким образом, я не знаю, как позволить открыть Scala это изображение.

Заранее спасибо.

+0

Может быть, это сообщение http://stackoverflow.com/questions/5752330/scala- swing-image может помочь вам в отображении изображения. – Yang

+0

@Yang, я решил эту проблему, спасибо – city

ответ

4

Вы не можете перенаправить stdout, используя > в командной строке. Вы должны использовать операторы #> и #|. См. Примеры в process упаковке documentation.

Об этом пишет test в test.txt:

import scala.sys.process._ 
import java.io.File 

// use scala.bat instead of scala on Windows 
val cmd = Seq("scala", "-e", """println(\"test\")""") #> new File("test.txt") 
cmd.! 

В вашем случае:

val cmd = "dot -Tpng overview.dot" #> new File("overview.png") 
cmd.! 

Или просто это (с dot принимает имя выходного файла как -ooutfile):

"dot -Tpng overview.dot -ooverview.png".! 
+0

, спасибо за вашу помощь. Но теперь eclipse сообщает «overview.png: Permission denied». Я думаю, что я должен использовать команду «su root». Но я не могу ввести пароль в код. Вы знаете, как решить эту проблему? – city

+0

@city: вам следует указать каталог имен файлов, который вы можете использовать. Например: 'new File («/home/city/overview.png »)'. – senia

+1

@city: иначе вы можете запустить 'scala' из root. – senia

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