使用javaoctave的断管过程
嗨,我正在使用javaoctave包与我的计算机中的octave桥接,以执行一些计算。但是,我在编译时遇到以下错误:使用javaoctave的断管过程,java,eclipse,octave,Java,Eclipse,Octave,嗨,我正在使用javaoctave包与我的计算机中的octave桥接,以执行一些计算。但是,我在编译时遇到以下错误: error: save: Unrecognized option '-' Exception in thread "main" dk.ange.octave.exception.OctaveIOException: IOException during close at sun.reflect.NativeConstructorAccessorImpl.newInstan
error: save: Unrecognized option '-'
Exception in thread "main" dk.ange.octave.exception.OctaveIOException: IOException during close
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at dk.ange.octave.exec.OctaveExec.reInstantiateException(OctaveExec.java:184)
at dk.ange.octave.exec.OctaveExec.getFromFuture(OctaveExec.java:165)
at dk.ange.octave.exec.OctaveExec.eval(OctaveExec.java:142)
at dk.ange.octave.io.OctaveIO.get(OctaveIO.java:75)
at dk.ange.octave.OctaveEngine.get(OctaveEngine.java:161)
at dk.ange.octave.OctaveEngine.get(OctaveEngine.java:176)
at learn.capability.CapabilityMeanVarianceEquation.learnCapabilities(CapabilityMeanVarianceEquation.java:214)
at learn.graph.SimulatedAnnealingLearner.learnSynergyGraph(SimulatedAnnealingLearner.java:69)
at parse.basketball.runner.GetPlayerFrequency.learnSynergyGraph(GetPlayerFrequency.java:112)
at parse.basketball.runner.GetPlayerFrequency.main(GetPlayerFrequency.java:96)
Caused by: dk.ange.octave.exception.OctaveIOException: IOException during close
at dk.ange.octave.exec.OctaveReaderCallable.call(OctaveReaderCallable.java:65)
at dk.ange.octave.exec.OctaveReaderCallable.call(OctaveReaderCallable.java:28)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
Caused by: java.io.IOException: Pipe to octave-process broken
at dk.ange.octave.exec.OctaveExecuteReader.read(OctaveExecuteReader.java:68)
at java.io.Reader.read(Reader.java:123)
at dk.ange.octave.exec.OctaveExecuteReader.close(OctaveExecuteReader.java:96)
at dk.ange.octave.exec.OctaveReaderCallable.call(OctaveReaderCallable.java:61)
... 6 more
我不知道我是怎么遇到这个错误的。然而,我已经仔细检查了我的输入,所以我认为这没有任何问题。我使用的程序以前已成功运行
希望有人能帮忙,谢谢 这与某些八度音阶版本中存在的“bug”有关,在这些版本中,“save”命令的“-”选项不受尊重。这可能在Octave的后续版本中得到了修复,但在此之前,您可以这样修改JavaOctave:
在DataReadFunctor.doReads(最终读取器)
中,注释掉以下行:
// final String createByOctaveLine = readerReadLine(bufferedReader);
// if (createByOctaveLine == null || !createByOctaveLine.startsWith("# Created by Octave")) {
// throw new OctaveParseException("Not created by Octave?: '" + createByOctaveLine + "'");
// }
在OctaveIO.get(最终字符串名)
中,编辑以下行:
final WriteFunctor writeFunctor = new ReaderWriteFunctor(new StringReader("save -text - " + name));
为此:
final WriteFunctor writeFunctor = new ReaderWriteFunctor(new StringReader("save -text /dev/stdout " + name));
这些更改应该可以解决这个问题,或者至少可以让您找到正确的方向,但我不建议将其作为补丁,因为该缺陷实际上存在于某些版本的Octave中(save文档确实指出“-”是输出到终端而不是文件的有效选项)