Почему не делает GCJ, находят классы от моих импортированных пакетов?

Я хочу скомпилировать маленькое JAVA-приложение в исполняемый файл Windows.

Приложение является очень небольшим, только единственный основной класс, но это использует ПОИ Apache.

Когда я компилирую его, все хорошо работает, пока я поместил Банку ПОИ в аргумент пути к классу.

Но когда дело доходит до соединения, GCJ не может разрешить ссылки классы в пакете ПОИ. Сообщения все как это:

undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'

Что я должен сделать для соединения моего приложения?

6
задан Daniel Rikowski 23 July 2009 в 12:53
поделиться

1 ответ

Вы должны составить импортируемые банки в .so библиотеки отдельно. Обязательно предоставьте банки в - Classath , как при составлении библиотек, как при составлении вашего кода.

Пример, где я составляю библиотеку GNU Crypto:

gcj --classpath=source/:libs/gnu-crypto.jar -fjni -c libs/gnu-crypto.jar -o libs/gnu-crypto.o 
gcj -shared -fPIC -o libs/libgnu-crypto.o libs/gnu-crypto.o -o libs/libgnu-crypto.so 

Наконец, выполните исполняемый файл через скрипт оболочки, ссылающийся на путь библиотеки. Например:

#!/bin/sh
export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH
exec ./MyJavaApp $*
5
ответ дан 17 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: