从JRuby脚本启动Java抛出TypeError:没有Java的公共构造函数

问题描述 投票:0回答:1

我有一个Java应用程序,我试图从JRuby脚本启动。我一直在谷歌搜索/拍摄/迭代这么多解决方案 - 我的“基本”脚本是:

include Java
require 'c:/nm/bin/h4j.jar'
module HOLTER
  include_package 'com.nemon.h4j.H4JFrame';
end
include_class Java::ComNemonH4j::H4JFrame
H4JFrame.new

这会引发以下错误:

TypeError: no public constructors for Java::ComNemonH4j::H4JFrame
  (root) at h4j_initialTest.rb:7

而且我发现这也会引发同样的错误:

$nm = HOLTER::H4JFrame.new

我的应用程序的主要构造函数是:

public static void main(String argv[])
{
  captureOutput();
  new H4JFrame(argv);
}   

那么我需要做什么才能使我的脚本简单地启动我的应用程序?任何/所有建议和指示将非常感谢!!

jar jruby typeerror
1个回答
1
投票

H4JFrame有一个0参数构造函数吗?在你的java main中你用String argv[]作为参数显示它被调用,所以我认为它没有。要使用当前代码启动应用程序,您需要将Java String数组传递给H4JFrame。

include Java
require 'c:/nm/bin/h4j.jar'
module HOLTER
  include_package 'com.nemon.h4j.H4JFrame';
end
include_class Java::ComNemonH4j::H4JFrame
str_arr = ["example input", "this is an array of strings", "it is a ruby object"]
H4JFrame.new(str_arr.to_java :String)
© www.soinside.com 2019 - 2024. All rights reserved.