1

Freeling ( http://nlp.lsi.upc.edu/freeling/ ) Java API ( http://devel.cpl.upc.edu/freeling/svn/trunk/APIs/java/ )を呼び出そうとしています。 ABCL ( http://common-lisp.net/project/armedbear/ )。Freeling Java API の README にあるすべての手順に従い、swig を使用して API をコンパイルしました。その後、サンプルコードを実行できました。

java -Djava.library.path=. -cp freeling.jar:. Analyzer < teste.text > teste.out

この Analyzer.java で、関連する行は次のとおりです。

...
import edu.upc.freeling.*;
...
System.loadLibrary( "freeling_javaAPI" );
...
MacoOptions op = new MacoOptions( LANG );

ABCLで私は試しました:

(add-to-classpath "/Users/arademaker/Downloads/myfreeling/APIs/java/freeling.jar")
(jstatic "load" "java.lang.System" "/Users/arademaker/Downloads/myfreeling/APIs/java/libfreeling_javaAPI.so")
(jnew "edu.upc.freeling.MacoOptions" "en")

しかし、エラーが発生しました:

Java exception 'java.lang.UnsatisfiedLinkError: edu.upc.freeling.freelingJNI.new_MacoOptions(Ljava/lang/String;)J'.
   [Condition of type JAVA-EXCEPTION]

誰にもアイデアはありますか?Java の System.load に関する ABCL の特別な問題はありますか?

4

2 に答える 2

1

ABCL を呼び出した後、Lisp から JAVA:ADD-TO-CLASSPATH を使用する方が良い形式と考えられます。

 (java:add-to-classpath (probe-file #p"freeling.jar"))

もっと情報を与えるべきです。ABCL には、CL:PATHNAMEの広範な概念があります。

于 2013-10-05T20:26:49.407 に答える
0

http://thread.gmane.org/gmane.lisp.armedbear.devel/2923の Alessio Stalla の提案に従って、問題を解決できました。解決策は、 -jar パラメータを使用せずに ABCL を次のようにロードすることでした。

java -jar abcl.jar

しかし、提案されたコマンドラインで:

java -Djava.library.path=. -cp freeling.jar:abcl.jar org.armedbear.lisp.Main

-jar は Java に -cp パラメータを無視させるように見えます:

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/linux/java.html

それにもかかわらず、私も試したので、それは謎の一部を説明しています:

(add-to-classpath "freeling.jar")

の前に

(jstatic "load" "java.lang.System" ".../libfreeling_javaAPI.so")
(jnew "edu.upc.freeling.MacoOptions" "en")

そのため、「-jar」を使用すると、「-cp」パラメーターを無視する以外に、他の結果が生じます。

于 2013-07-10T18:32:31.510 に答える