【发布时间】:2018-04-20 03:07:33
【问题描述】:
我正在使用 Java 命令行应用程序(它是开源的)作为我的 jrubyonrails 项目的 jar 文件。主要应用如下
public class Decoder extends Annotator {
public Decoder() {
super();
}
public static void main(String[] args) {
... // Do something that I don't want
myDesiredMethod();
... // And some other thing
}
...
}
有很多步骤我想跳过,我只想要myDesiredMethod 函数。它是来自父类Annotator 的protected 方法。
public class Annotator extends Helper {
...
protected SomeClass myDesiredMethod(boolean reMap) throws Exception { ... }
...
}
Annotator 类没有任何公共构造函数,所以我不能:
ann = Annotator.new
它会引发此错误:TypeError: no public constructors for Annotator。
然后我尝试实现另一个继承Annotator 的类以访问myDesiredMethod。这是我到目前为止尝试过的jruby 代码
require 'java'
require 'decoder.jar'
java_import java.util.ArrayList
java_import java.lang.StringBuilder
module MyModule
class RuDecoder < Annotator
include_package 'com.decoder'
def self.my_method
myDesiredMethod
end
end
它返回错误:NoMethodError: undefined method 'myDesiredMethod' for MyModule::RuDecoder:Class。似乎jruby 没有寻找父类的方法。
在我的情况下有什么解决方案,我不想每次更新时都将java库重建为jar并手动将其放入我的程序中。
【问题讨论】:
标签: jruby jrubyonrails