我收到此錯誤:爲什麼opennlp庫的HelloWorld在Java上工作正常,但不適用於Jruby?
SyntaxError: hello.rb:13: syntax error, unexpected tIDENTIFIER
public HelloWorld(InputStream data) throws IOException {
的HelloWorld.rb是:運行ruby HelloWorld.rb "I am trying to make it work"
當我運行它完美的作品,當然HelloWorld.java "I am trying to make it work"
當
require "java"
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import opennlp.tools.postag.POSModel;
import opennlp.tools.postag.POSTaggerME;
public class HelloWorld {
private POSModel model;
public HelloWorld(InputStream data) throws IOException {
setModel(new POSModel(data));
}
public void run(String sentence) {
POSTaggerME tagger = new POSTaggerME(getModel());
String[] words = sentence.split("\\s+");
String[] tags = tagger.tag(words);
double[] probs = tagger.probs();
for(int i = 0; i < tags.length; i++) {
System.out.println(words[i] + " => " + tags[i] + " @ " + probs[i]);
}
}
private void setModel(POSModel model) {
this.model = model;
}
private POSModel getModel() {
return this.model;
}
public static void main(String args[]) throws IOException {
if(args.length < 2) {
System.out.println("HelloWord <file> \"sentence to tag\"");
return;
}
InputStream is = new FileInputStream(args[0]);
HelloWorld hw = new HelloWorld(is);
is.close();
hw.run(args[1]);
}
}
的.java
沒有按」 t包含require java
聲明。
編輯:
我跟着以下steps。
輸出爲jruby -v
:
jruby 1.6.7.2 (ruby-1.8.7-p357) (2012-05-01 26e08ba) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_35) [darwin-x86_64-java]
https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby FYI – 0x90
如果您要編寫Java並在JVM上運行它,只需使用java。 –
'require'java' #通過上面的'require',我們現在可以通過它們的完整路徑參考標準Java平臺的一部分。我們可以在Java對象上透明地調用Java方法,就像在Java對象上調用Java方法一樣,如果它們是在Ruby中定義的。 frame.getContentPane.add(標籤)#調用Java方法 '的getContentPane' 那偉大工程...... frame.setDefaultCloseOperation(javax.swing.JFrame中:: EXIT_ON_CLOSE) frame.pack frame.setVisible(真)' – 0x90