Сохраняйте с помощью java. Ошибка оценки 127

Я получил эту ошибку, и я не знаю, что делать, и не смог найти другого решения на этом сайте. Я запускаю Rserve в фоновом режиме на своем компьютере и подключаюсь к локальному хосту. Но я не могу заставить рамку всплывать.
Вот мой код:

package rservedemo;

/**
 *
 * @author Carl
 */
import java.awt.*;

import java.awt.event.*;
import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;

public class PlotDemo extends Canvas {


public static void main(String[] args) {

try 
{
    String device = "jpeg";
    RConnection c = new RConnection ((args.length>0)?args[0]:"127.0.0.1");
    if
            (c.parseAndEval("supressWarnings(require('Cairo',quietly=TRUE))").asInteger()>0) device="CarioJPEG";

    else
        System.out.println("(Consider installing Cairo package for better bitmap output)");

       REXP xp = c.parseAndEval("Try("+device+"('test.jpg,quality=90))");
       if (xp.inherits("Try error"))
       {
           System.err.println("Can't open "+device+" graphics device:\n" +xp.asString());

       REXP w = c.eval("If (exists('last.warning') && length(last.warning)>0)names(last.warning) [1] else 0");
       if (w.isString()) System.err.println(w.asString());
       return;
       }
       c.parseAndEval("data(iris); plot(iris$Sepal.Length, iris$Petal.Length); dev.off()");

       xp = c.parseAndEval("r=readBin('test.jpg','raw',1024*1024); unlink('test.jpg');r");

       Image img = Toolkit.getDefaultToolkit().createImage(xp.asBytes());
       Frame f = new Frame("Test image");
       f.add(new PlotDemo (img));

       f.addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){System.exit(0);}

       });
       f.pack();
       f.setVisible(true);
       c.close();

}
catch (RserveException rse)
        {
            System.out.println(rse);
        }
    catch (REXPMismatchException mme)
    {
        System.out.println(mme);
        mme.printStackTrace();
    }
catch (Exception e)

{
    System.out.println("Seomthing went wrong, but it's not Rserve: " +e.getMessage());
    e.printStackTrace();
}

    }
    Image img;
    public PlotDemo(Image img)
    {
        this.img=img;
        MediaTracker mediaTracker = new MediaTracker(this);
        mediaTracker.addImage(img, 0);
        try
        {
            mediaTracker.waitForID(0);
        }
        catch (InterruptedException ie)
        {
            System.err.println(ie);
            System.exit(1);
        }
        setSize(img.getWidth(null), img.getHeight(null));      
    }
    public void paint (Graphics g)
    {
        g.drawImage(img, 0, 0, null);
    }
}

И вот ошибка, я пытался изменить строку на 27, но не смог сделать ничего полезного. Когда я запускаю

c.parseAndEval("data(iris); plot(iris$Sepal.Length, iris$Petal.Length); dev.off()"); 

в r и там работает. Так что проблема не в этом.

 Seomthing went wrong, but it's not Rserve: eval failed, request status: error code: 127
org.rosuda.REngine.REngineException: eval failed, request status: error code: 127
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:454)
    at org.rosuda.REngine.REngine.parseAndEval(REngine.java:108)
    at rservedemo.PlotDemo.main(PlotDemo.java:27)

Благодарен за помощь


person Clang    schedule 10.11.2016    source источник


Ответы (1)


Обычно код завершения процесса 127 означает File not found. В вашем случае проблематичной может быть строка:

REXP xp = c.parseAndEval("Try("+device+"('test.jpg,quality=90))");

потому что у вас может быть ошибка (опечатка) в строке:

(c.parseAndEval("supressWarnings(require('Cairo',quietly=TRUE))").asInteger()>0) device="CarioJPEG";

Примечание: CarioJPEG вместо CairoJPEG

person krzydyn    schedule 10.11.2016
comment
И SupressWarnings тоже выглядит неправильно. Это не то, как вы заклинание подавляете! - person Stephen C; 10.11.2016