Domanda

Voglio compilare una piccola applicazione Java in un eseguibile di Windows.

L'applicazione è molto piccolo, solo una singola classe principale, ma utilizza Apache POI.

Quando compilo esso, tutto funziona bene, fino a quando ho messo il vaso POI nella discussione percorso di classe.

Ma quando si tratta di collegamento, GCJ non può risolvere i riferimenti alle classi del pacchetto POI. I messaggi sono tutti come questo:

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

Che cosa devo fare per collegare la mia domanda?

È stato utile?

Soluzione

Si deve compilare i barattoli importati in librerie .so separatamente. Assicurati di fornire i vasetti nel --classpath, sia durante la compilazione della librerie durante la compilazione del codice.

Un esempio, dove sto compilando la libreria crittografica GNU:

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 

Infine, eseguire il file eseguibile tramite uno script di shell che fa riferimento al percorso della libreria. Ad esempio:

#!/bin/sh
export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH
exec ./MyJavaApp $*
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top