help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Calling Octave from within Java


From: Ernst Reissner
Subject: Calling Octave from within Java
Date: Thu, 25 Nov 2010 22:48:48 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101026 SUSE/3.0.10 Thunderbird/3.0.10

Hello all,
started using JavaOctave directly which worked well, except some strange effects, i'll fix later.
Now i use JavaOctave to create testcases with junit.

My application is implementing octave functions in java using the octave-package "java"
and then testing the java-integration by invoking octave from junit using JavaOctave.

The strange thing is that, as soon as i use junit, JavaOctave does not work any more.
I have the code

    OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
     octave.put("x",Octave.scalar(1.3));
        System.out.println("Java: x = " +
               octave.get(OctaveDouble.class,"x").get(1));
    octave.close();

 
which works well directly invoked but not with junit.
(Well it does work with junit but not if used as intended: I can place the above conde in the main method of the test class and it works. )
I can imagine, it has to do with reflection, but i cannot figure out what the problem is.
I also found in the internet examples of using x

The error i obtain is
SEVERE: ExecutionException should not happen                         
java.util.concurrent.ExecutionException: java.util.ServiceConfigurationError: dk.ange.octave.io.spi.OctaveDataWriter: Provider dk.ange.octave.io.impl.BooleanWriter could not be instantiated: java.lang.ClassCastException: Cannot cast dk.ange.octave.io.impl.BooleanWriter to dk.ange.octave.io.spi.OctaveDataWriter                                    
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)                                      
        at java.util.concurrent.FutureTask.get(FutureTask.java:111)                                                
        at dk.ange.octave.exec.OctaveExec.getFromFuture(OctaveExec.java:184)                                       
        at dk.ange.octave.exec.OctaveExec.eval(OctaveExec.java:158)                                                
        at dk.ange.octave.io.OctaveIO.set(OctaveIO.java:56)                                                        
        at dk.ange.octave.OctaveEngine.put(OctaveEngine.java:156)                                                  
        at eu.simuline.octave.OctaveTest.testConstrDouble(OctaveTest.java:63)                                      
        at eu.simuline.octave.OctaveTest$TestAll.testConstrDouble(OctaveTest.java:42)                              
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                             
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)                           
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                   
        at java.lang.reflect.Method.invoke(Method.java:616)                                                        
        at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)                 
        at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)                    
        at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)              
        at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)                         
        at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)                               
        at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)      
        at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)                   
        at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)                    
        at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)              
        at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)                                 
        at org.junit.internal.runners.CompositeRunner.run(CompositeRunner.java:29)                                 
        at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)                    
        at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)              
        at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)                                 
        at org.junit.internal.runners.CompositeRunner.run(CompositeRunner.java:29)                                 
        at org.junit.runner.JUnitCore.run(JUnitCore.java:121)                                                      
        at org.junit.runner.JUnitCore.run(JUnitCore.java:100)                                                      
        at org.junit.runner.JUnitCore.run(JUnitCore.java:91)                                                       
        at eu.simuline.testhelpers.Actions$CoreRunner.runAll(Actions.java:211)                                     
        at eu.simuline.testhelpers.Actions$CoreRunner.run(Actions.java:188)                                        
Caused by: java.util.ServiceConfigurationError: dk.ange.octave.io.spi.OctaveDataWriter: Provider dk.ange.octave.io.impl.BooleanWriter could not be instantiated: java.lang.ClassCastException: Cannot cast dk.ange.octave.io.impl.BooleanWriter to dk.ange.octave.io.spi.OctaveDataWriter                                                                  
        at java.util.ServiceLoader.fail(ServiceLoader.java:224)                                                    
        at java.util.ServiceLoader.access$100(ServiceLoader.java:181)                                              
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:370)                                       
        at java.util.ServiceLoader$1.next(ServiceLoader.java:438)                                                  
        at dk.ange.octave.io.spi.OctaveDataWriter.initIfNecessary(OctaveDataWriter.java:54)                        
        at dk.ange.octave.io.spi.OctaveDataWriter.getOctaveDataWriter(OctaveDataWriter.java:44)                    
        at dk.ange.octave.io.OctaveIO.write(OctaveIO.java:198)                                                     
        at dk.ange.octave.io.OctaveIO.write(OctaveIO.java:217)                                                     
        at dk.ange.octave.io.DataWriteFunctor.doWrites(DataWriteFunctor.java:53)                                   
        at dk.ange.octave.exec.OctaveWriterCallable.call(OctaveWriterCallable.java:56)                             
        at dk.ange.octave.exec.OctaveWriterCallable.call(OctaveWriterCallable.java:27)                             
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ClassCastException: Cannot cast dk.ange.octave.io.impl.BooleanWriter to dk.ange.octave.io.spi.OctaveDataWriter
        at java.lang.Class.cast(Class.java:3007)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:362)
        ... 13 more


My personal code is the package starting with eu.simuline.

Can you help?

greetings,
Ernst



reply via email to

[Prev in Thread] Current Thread [Next in Thread]