Skip to content

Instantly share code, notes, and snippets.

@byteit101
Last active August 29, 2015 14:07
Show Gist options
  • Save byteit101/4c0617cf879d99e84c99 to your computer and use it in GitHub Desktop.
Save byteit101/4c0617cf879d99e84c99 to your computer and use it in GitHub Desktop.
javaCV JRuby oddness
if you download JavaCV and put these file in the bin folder, then running
```
javac -cp javacv.jar Test.java
ruby -I . test.rb
```
Will work for the ruby mat, but not the java mat
Making an eclipse/netbeans project to build a jar that depends on the javacv jars works only if the ruby line is not commented out, then java fails
#<Java::OrgBytedecoJavacpp::opencv_core::Mat:0x5465282c>
Test.java:7:in `<init>': java.lang.NoClassDefFoundError: org/bytedeco/javacpp/opencv_core$Mat
from java/lang/reflect/Constructor.java:526:in `newInstance'
from test.rb:22:in `(root)'
from test.rb:22:in `(root)'
Caused by:
URLClassLoader.java:366:in `run': java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core$Mat
from URLClassLoader.java:355:in `run'
from AccessController.java:-2:in `doPrivileged'
from URLClassLoader.java:354:in `findClass'
from ClassLoader.java:425:in `loadClass'
from Launcher.java:308:in `loadClass'
from ClassLoader.java:358:in `loadClass'
from Test.java:7:in `<init>'
from NativeConstructorAccessorImpl.java:-2:in `newInstance0'
from NativeConstructorAccessorImpl.java:57:in `newInstance'
from DelegatingConstructorAccessorImpl.java:45:in `newInstance'
from Constructor.java:526:in `newInstance'
from JavaConstructor.java:259:in `newInstanceDirect'
from ConstructorInvoker.java:79:in `call'
from ConstructorInvoker.java:160:in `call'
from CachingCallSite.java:316:in `cacheAndCall'
from CachingCallSite.java:145:in `callBlock'
from CachingCallSite.java:149:in `call'
from ConcreteJavaProxy.java:48:in `call'
from CachingCallSite.java:316:in `cacheAndCall'
from CachingCallSite.java:145:in `callBlock'
from CachingCallSite.java:149:in `call'
from RubyClass.java:844:in `newInstance'
from RubyClass$INVOKER$i$newInstance.gen:-1:in `call'
from JavaMethod.java:280:in `call'
from ConcreteJavaProxy.java:141:in `call'
from CachingCallSite.java:306:in `cacheAndCall'
from CachingCallSite.java:136:in `call'
from test.rb:22:in `__file__'
from test.rb:-1:in `load'
from Ruby.java:863:in `runScript'
from Ruby.java:856:in `runScript'
from Ruby.java:725:in `runNormally'
from Ruby.java:574:in `runFromMain'
from Main.java:395:in `doRunFromMain'
from Main.java:290:in `internalRun'
from Main.java:217:in `run'
from Main.java:197:in `main'
(from a more complicated app running JavaFX)
Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.opencv_core$Mat.allocate()V
at org.bytedeco.javacpp.opencv_core$Mat.allocate(Native Method)
at org.bytedeco.javacpp.opencv_core$Mat.<init>(org/bytedeco/javacpp/opencv_core.java:6211)
at org.bytedeco.javacpp.helper.opencv_core$AbstractMat.<clinit>(org/bytedeco/javacpp/helper/opencv_core.java:2376)
at edu.wpi.first.sfxcv.WebcamSource.<init>(edu/wpi/first/sfxcv/WebcamSource.java:40)
at java.lang.reflect.Constructor.newInstance(java/lang/reflect/Constructor.java:526)
at RUBY.open(/home/home/patrick/NetBeansProjects/sfx/lib/designer.rb:671)
at RUBY.handle(/home/home/patrick/NetBeansProjects/FXMLLoader/lib/fxmlloader/elts.rb:521)
at EventHandlerWrapper_1947380757.handle(EventHandlerWrapper_1947380757.gen:13)
at EventHandlerWrapper_1947380757.handle(EventHandlerWrapper_1947380757.gen:13)
import org.bytedeco.javacpp.opencv_core.Mat;
public class Test
{
public Test()
{
Mat mat = new Mat();
}
}
require 'javacv.jar'
require 'opencv.jar'
require 'javacpp.jar'
require 'opencv-linux-x86_64.jar'
require 'artoolkitplus.jar'
require 'artoolkitplus-linux-x86_64.jar'
require 'ffmpeg.jar'
require 'ffmpeg-linux-x86_64.jar'
require 'flycapture.jar'
require 'flycapture-linux-x86_64.jar'
require 'libdc1394.jar'
require 'libdc1394-linux-x86_64.jar'
require 'libfreenect.jar'
require 'libfreenect-linux-x86_64.jar'
require 'videoinput.jar'
p org.bytedeco.javacpp.opencv_core::Mat.new # comment this out and it fails as per the readme
p Java::Test.new
puts 'Done'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment