Freeling: невозможно скомпилировать Java API в Ubuntu

В настоящее время я пытаюсь создать Java API для Freeling, чтобы использовать его в Stanbol.
Таким образом, я следовал всем инструкциям, приведенным в документации Freeling (здесь:https://github.com/insideout10/stanbol-freeling) безуспешно. Кажется, это проблема с моим JDK, но я действительно не знаю, как это исправить.
Вот что я сделал:

Шаг А, скомпилировать Freeling в C ++ (здесь нет проблем):

A.1) Установите следующие пакеты (с помощью «sudo apt-get install»):
— сборка необходима
— zlib1g-dev
— libboost1.48-all-dev
— автомат
— автоконф
— libtool
— libboost-regex-dev
— libicu-dev
— libboost-filesystem-dev
— libboost-program-options-dev
— глоток

А.2) Загрузите последнюю версию Freeling:
svn checkout http://devel.cpl.upc.edu/freeling/svn/trunk Freeling

А.3) Подготовьте мой репозиторий Freeling:
ACLOCAL; libtoolize; Autoconf; automake -a

4) Сборка и установка Freeling:
./configure
делать
sudo make install

Шаг Б, скомпилируйте Java API (моя проблема в этом шаге):

1) Замените freeling.i, расположенный на freeling / APIs / common / freeling.i, на freeling.i, указанный по адресу: [url] https://raw.github.com/ziodave/freeling-brew-formula/master/APIs/ общий / freeling.i [/ URL]

2) Установите параметры для Makefile, расположенного в freeling / APIs / java / MakeFile

Мой Makefile следующий :

# Change these paths to match your installation
# Alternatively, you can call 'make' overriding variable values, E.g.:
#     make FREELINGDIR=/my/freeling/dir SWIGDIR=/my/swig/dir JAVADIR=/my/java/dir

FREELINGDIR = /home/saturn/freeling
SWIGDIR = /usr/share/swig2.0
JAVADIR = /usr/lib/jvm/jdk1.7.0_25

# you may change the package name if you want
PACKAGE = edu/upc/freeling
JPACKAGE = edu.upc.freeling

# Change your compiler, if necessary.
GCC=g++

all: freeling_javaAPI.cxx libfreeling_javaAPI.so

.PHONY: all

# Compile the C++ API
libfreeling_javaAPI.so: freeling_javaAPI.cxx
$(GCC) -shared -o libfreeling_javaAPI.so freeling_javaAPI.cxx -lfreeling -L$(FREELINGDIR)/lib -I$(FREELINGDIR)/include -I$(JAVADIR)/include -I$(JAVADIR)/include/linux -fPIC
$(JAVADIR)/bin/javac $(PACKAGE)/*.java
$(JAVADIR)/bin/jar -cf freeling.jar $(PACKAGE)

# Build the Java JNI wrapper classes.
freeling_javaAPI.cxx: freeling_javaAPI.i ../common/freeling.i
rm -rf $(PACKAGE)
mkdir -p $(PACKAGE)
swig -java -c++ -package $(JPACKAGE) -outdir $(PACKAGE) -o freeling_javaAPI.cxx -I$(SWIGDIR)/java -I$(SWIGDIR)/std -I$(SWIGDIR) freeling_javaAPI.i

clean:
rm -rf *.jar *.so *.cxx *.class edu
java -> $(JAVADIR)/bin/java
jar -> $(JAVADIR)/bin/jar

3) Запустите make

И я получаю следующий результат:

g++ -shared -o libfreeling_javaAPI.so freeling_javaAPI.cxx -lfreeling -L/usr/local/share/freeling/lib -I/usr/local/share/freeling/include -I/usr/lib/jvm/jdk1.7.0_25/include -I/usr/lib/jvm/jdk1.7.0_25/include/linux -fPICfreeling_javaAPI.cxx: In function ‘jlong Java_edu_upc_freeling_freelingJNI_new_1TreeIteratorNode_1_1SWIG_10(JNIEnv*, jclass)’:
freeling_javaAPI.cxx:2995:3: error: ‘tree_iterator’ was not declared in this scope
freeling_javaAPI.cxx:2995:3: note: suggested alternative:
/usr/local/include/freeling/tree.h:47:7: note:   ‘freeling::tree_iterator’
freeling_javaAPI.cxx:2995:18: error: ‘node’ was not declared in this scope
freeling_javaAPI.cxx:2995:18: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:372:14: note:   ‘freeling::node’
freeling_javaAPI.cxx:2995:23: error: ‘tree’ was not declared in this scope
freeling_javaAPI.cxx:2995:23: note: suggested alternative:
/usr/local/include/freeling/tree.h:35:26: note:   ‘freeling::tree’
freeling_javaAPI.cxx:2995:36: error: expected primary-expression before ‘>’ token
freeling_javaAPI.cxx:2995:39: error: ‘result’ was not declared in this scope
freeling_javaAPI.cxx:2999:46: error: expected primary-expression before ‘>’ token
freeling_javaAPI.cxx:2999:49: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx:2999:50: error: expected ‘;’ before ‘new’
freeling_javaAPI.cxx:3000:38: error: expected primary-expression before ‘>’ token
freeling_javaAPI.cxx:3000:42: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx: In function ‘jlong Java_edu_upc_freeling_freelingJNI_new_1TreeIteratorNode_1_1SWIG_11(JNIEnv*, jclass, jlong, jobject)’:
freeling_javaAPI.cxx:3007:3: error: ‘tree’ was not declared in this scope
freeling_javaAPI.cxx:3007:3: note: suggested alternative:
/usr/local/include/freeling/tree.h:35:26: note:   ‘freeling::tree’
freeling_javaAPI.cxx:3007:9: error: ‘node’ was not declared in this scope
freeling_javaAPI.cxx:3007:9: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:372:14: note:   ‘freeling::node’
freeling_javaAPI.cxx:3007:17: error: ‘arg1’ was not declared in this scope
freeling_javaAPI.cxx:3007:39: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx:3007:41: error: expected ‘;’ before numeric constant
freeling_javaAPI.cxx:3008:3: error: ‘tree_iterator’ was not declared in this scope
freeling_javaAPI.cxx:3008:3: note: suggested alternative:
[...]
Java_edu_upc_freeling_freelingJNI_ParseTree_1SWIGUpcast(JNIEnv*, jclass, jlong)’:
freeling_javaAPI.cxx:12567:7: error: ‘tree’ was not declared in this scope
freeling_javaAPI.cxx:12567:7: note: suggested alternative:
/usr/local/include/freeling/tree.h:35:26: note:   ‘freeling::tree’
freeling_javaAPI.cxx:12567:13: error: ‘node’ was not declared in this scope
freeling_javaAPI.cxx:12567:13: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:372:14: note:   ‘freeling::node’
freeling_javaAPI.cxx:12567:22: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx:12567:36: error: ‘parse_tree’ was not declared in this scope
freeling_javaAPI.cxx:12567:36: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:423:14: note:   ‘freeling::parse_tree’
freeling_javaAPI.cxx:12567:49: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx: In function ‘jlong Java_edu_upc_freeling_freelingJNI_Depnode_1SWIGUpcast(JNIEnv*, jclass, jlong)’:
freeling_javaAPI.cxx:12575:7: error: ‘node’ was not declared in this scope
freeling_javaAPI.cxx:12575:7: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:372:14: note:   ‘freeling::node’
freeling_javaAPI.cxx:12575:14: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx:12575:28: error: ‘depnode’ was not declared in this scope
freeling_javaAPI.cxx:12575:28: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:452:14: note:   ‘freeling::depnode’
freeling_javaAPI.cxx:12575:38: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx: In function ‘jlong Java_edu_upc_freeling_freelingJNI_DepTree_1SWIGUpcast(JNIEnv*, jclass, jlong)’:
freeling_javaAPI.cxx:12583:7: error: ‘tree’ was not declared in this scope
freeling_javaAPI.cxx:12583:7: note: suggested alternative:
/usr/local/include/freeling/tree.h:35:26: note:   ‘freeling::tree’
freeling_javaAPI.cxx:12583:13: error: ‘depnode’ was not declared in this scope
freeling_javaAPI.cxx:12583:13: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:452:14: note:   ‘freeling::depnode’
freeling_javaAPI.cxx:12583:25: error: expected primary-expression before ‘)’ token
freeling_javaAPI.cxx:12583:39: error: ‘dep_tree’ was not declared in this scope
freeling_javaAPI.cxx:12583:39: note: suggested alternative:
/usr/local/include/freeling/morfo/language.h:478:14: note:   ‘freeling::dep_tree’
freeling_javaAPI.cxx:12583:50: error: expected primary-expression before ‘)’ token
make: *** [libfreeling_javaAPI.so] Error 1

Если я понимаю, Makefile просто вызывает JDK и сталкивается с ошибкой.

Я пытался изменить свой JDK на более старые версии (я пытался с JDK7, JDK6 и SDK6), но результат тот же.

Для информации я работаю на виртуальной машине с Ubuntu12.04 x64, я также пытался скомпилировать Freeling с Ubuntu12.04 x32, но результат тот же.

Я добавил следующие строки в мой .bashrc:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25
MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=2048m"JAVA_OPTS="-Xmx2048m -XX:MaxPermSize=2048m"ANT_OPTS="-Xmx2048m -XX:MaxPermSize=2048m"JVM_ARGS="-Xmx2048m -XX:MaxPermSize=2048m"export MAVEN_OPTS
export JAVA_OPTS
export ANT_OPTS
export JVM_ARGS
export JAVA_HOME

Я думаю, что делаю что-то не так, но я действительно не знаю, что, я потратил 3 дня, чтобы найти решение без успеха. Может ли кто-нибудь помочь мне?

Заранее спасибо !

1

Решение

Похоже, что вы намного превосходите меня, но я заметил, что вы указали путь к своей переменной среды. Вы также проверили, чтобы убедиться, какая версия Java используется вашей системой в качестве общей по умолчанию?

Попробуйте использовать

sudo update-alternatives --config java

и убедившись, что используется правильный JDK.

Если вы уже решили эту проблему, я хотел бы услышать ваше решение (так как вы опубликовали это некоторое время назад).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector