jrubyからJava Openclを使用しようとしていますが、多くのGoogle検索でも解決できない問題が発生しています。jruby内でJavaクラスを使用する際のトラブル
require 'java'
require 'JOCL-0.1.7.jar'
platforms = org.jocl.cl_platform_id.new
puts platforms.class
org.jocl.CL.clGetPlatformIDs(1, platforms, nil)
私が使用してこのコードを実行すると:JRubyのtest.rb を最後の行がコメント解除されているとき、私は、次のエラーを取得する:
#<Class:0x10191777e>
TypeError: cannot convert instance of class org.jruby.java.proxies.ConcreteJavaP
roxy to class [Lorg.jocl.cl_platform_id;
LukeTest at test.rb:29
(root) at test.rb:4
は、誰もが解決する方法についてのアイデアを持っているかどうかを疑問に思いますこの問題?
EDIT: OKので、私は、私はプラットフォームの配列を作ることによって、この問題の最初の部分を解決したと思う:
platforms = org.jocl.cl_platform_id[1].new
が、次の数行を追加するときには、このエラーにつながった:
私はプラットフォームのクラスを印刷何らかの理由context_properties = org.jocl.cl_context_properties.new()
context_properties.addProperty(org.jocl.CL::CL_CONTEXT_PLATFORM, platforms[0])
CodegenUtils.java:98:in `human': java.lang.NullPointerException
from CodegenUtils.java:152:in `prettyParams'
from CallableSelector.java:462:in `argumentError'
from CallableSelector.java:436:in `argTypesDoNotMatch'
from RubyToJavaInvoker.java:248:in `findCallableArityTwo'
from InstanceMethodInvoker.java:66:in `call'
from CachingCallSite.java:332:in `cacheAndCall'
from CachingCallSite.java:203:in `call'
from test.rb:36:in `module__0$RUBY$LukeTest'
from test.rb:-1:in `module__0$RUBY$LukeTest'
from test.rb:4:in `__file__'
from test.rb:-1:in `load'
from Ruby.java:679:in `runScript'
from Ruby.java:672:in `runScript'
from Ruby.java:579:in `runNormally'
from Ruby.java:428:in `runFromMain'
from Main.java:278:in `doRunFromMain'
from Main.java:198:in `internalRun'
from Main.java:164:in `run'
from Main.java:148:in `run'
from Main.java:128:in `main'
[0]これはNilClassとしてリストされています!