Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jruby中使用java类时遇到问题_Java_Ruby_Jruby - Fatal编程技术网

在jruby中使用java类时遇到问题

在jruby中使用java类时遇到问题,java,ruby,jruby,Java,Ruby,Jruby,我试图从jruby内部使用它,但遇到了一个我无法解决的问题,即使使用了大量的谷歌搜索 require'java' 需要'JOCL-0.1.7.jar' platforms=org.jocl.cl\u platform\u id.new 这是我的职业 org.jocl.CL.clGetPlatformIDs(1,平台,无) 当我使用:jruby test.rb运行此代码时 当最后一行未注释时,出现以下错误: # TypeError:无法转换类org.jruby.java.proxies.Conc

我试图从jruby内部使用它,但遇到了一个我无法解决的问题,即使使用了大量的谷歌搜索

require'java'
需要'JOCL-0.1.7.jar'
platforms=org.jocl.cl\u platform\u id.new
这是我的职业
org.jocl.CL.clGetPlatformIDs(1,平台,无)
当我使用:jruby test.rb运行此代码时 当最后一行未注释时,出现以下错误:

#
TypeError:无法转换类org.jruby.java.proxies.ConcreteJavaP的实例
roxy至班级[Lorg.jocl.cl_平台id;
测试时的LukeTest.rb:29
(根)在测试中。rb:4
只是想知道是否有人对如何解决这个问题有想法

编辑: 好的,我想我已经解决了这个问题的第一部分,通过使平台成为一个阵列:

platforms = org.jocl.cl_platform_id[1].new
但在添加下两行时,这导致了此错误:

context\u properties=org.jocl.cl\u context\u properties.new()
context_properties.addProperty(org.jocl.CL::CL_context_PLATFORM,platforms[0])
codeguntils.java:98:in'human':java.lang.NullPointerException
来自codeguntils.java:152:in`prettyParams'
来自CallableSelector.java:462:in'argumentError'
来自CallableSelector.java:436:in`argTypesDoNotMatch'
来自RubyToJavaInvoker.java:248:in`findCallableArityTwo'
来自InstanceMethodInvoker.java:66:in'call'
来自CachingCallSite.java:332:in'cacheAndCall'
来自CachingCallSite.java:203:in'call'
from test.rb:36:in'module__0$RUBY$LukeTest'
from test.rb:-1:in'module\uuu0$RUBY$LukeTest'
来自test.rb:4:在`\uu文件中
来自test.rb:-1:在'load'中
来自Ruby.java:679:in'runScript'
来自Ruby.java:672:in'runScript'
来自Ruby.java:579:in'runnormal'
from Ruby.java:428:in'runFromMain'
from Main.java:278:in'doRunFromMain'
来自Main.java:198:in'internalRun'
来自Main.java:164:in'run'
from Main.java:148:in'run'
from Main.java:128:in'Main'

由于某种原因,当我打印平台类[0]时,它被列为NilClass!?

您忽略了一个非常简单的错误。您编写

platforms = org.jocl.cl_platform_id.new
但是这一行创建了类
org.jocl.cl\u platform\u id
的一个实例。然后将其作为第二个参数传递给中的
org.jocl.cl.clGetPlatformIDs

org.jocl.CL.clGetPlatformIDs(1, platforms, nil)
这是行不通的,因为该方法的第二个参数需要
org.jocl.cl\u platform\u id
对象的(空)数组

错误是:“我有一个Java对象的代理,我不能像你要求我做的那样将它转换成
org.jocl.cl\u platform\u id
对象数组

如果你只是说

platforms = []
把它传进来,它可能就行了:)