لماذا لا يجد GCJ الفصول من حزمتي المستوردة؟

StackOverflow https://stackoverflow.com/questions/1171525

  •  19-09-2019
  •  | 
  •  

سؤال

أريد أن تجميع تطبيق Java صغير إلى Windows قابل للتنفيذ.

التطبيق صغير جدا، فقط فئة رئيسية واحدة، ولكنها تستخدم Apache PoI.

عندما أرادته، كل شيء يعمل بشكل جيد، طالما وضعت جرة POI في حجة مسار الفصل.

ولكن عندما يتعلق الأمر بالربط، لا يمكن ل GCJ حل المراجع الفئات في حزمة POI. الرسائل كلها مثل هذا:

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

ماذا علي أن أفعل من أجل ربط طلبي؟

هل كانت مفيدة؟

المحلول

عليك أن تجميع الجرار المستوردة في .so المكتبات بشكل منفصل. تأكد من تزويد الجرار في --classpath, ، سواء أثناء تجميع المكتبات أثناء تجميع التعليمات البرمجية الخاصة بك.

مثال، حيث أتجمع مكتبة جنو تشفير:

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 $*
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top