Вызывающий свободный API Java от ABCL

Я пытаюсь вызвать Фрилинг ( 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/). Я следовал всей процедуре, изложенной в README Frelling Java API, чтобы, используя 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]

У кого-нибудь есть идеи? Любая особая проблема ABCL с System.load Java?

2 ответа

Лучше всего использовать JAVA:ADD-TO-CLASSPATH из Lisp после вызова ABCL.

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

должен дать больше информации. ABCL имеет обширное понятие CL:PATHNAME

Следуя предложению Алессио Сталлы в http://thread.gmane.org/gmane.lisp.armedbear.devel/2923 я смог решить свою проблему. Решением было загрузить ABCL не с параметром -jar:

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".

Другие вопросы по тегам