Domanda

ho fatto un applet Java che dipende da alcuni libriaries terze parti, nonché una DLL che viene chiamato tramite JNI. Questi saranno ovviamente non essere installati su computer client. Esiste un modo per confezionare queste terze parti e libriaries DLL esterne all'interno della mia JAR di Applet in modo che possa essere eseguito da qualsiasi client con una base Java installare?

È stato utile?

Soluzione

Utilizzando JNI all'interno di un'applicazione web è una ricetta per il bruciore di stomaco, in particolare in Windows.

  • È, ovviamente, non può distribuire la DLL all'interno del file WAR e probabilmente richiederà un programma di installazione separato gestito dalla deployer anticipo.
  • Si dovrà garantire che il vostro java.library.path è configurato correttamente, che solitamente viene effettuata dalle impostazioni del server di applicazione, piuttosto che qualcosa implementabile nel file WAR.
  • Il modo in cui JNI collega la classe nativa con la libreria sarà causare mal di testa classe Loader, se si tenta di eseguire più di un'istanza di tale applicazione web. Un modo per aggirare questo è quello di spostare il file JAR che contiene in una class loader condiviso (come cartella comune di Tomcat), ma che ha le sue complicazioni.

Altri suggerimenti

  

Esiste un modo per confezionare questi terzo   libriaries partito

In Eclipse, sotto le proprietà del progetto Java (tasto destro), posso fare una:

 Export... => Export as Runnable JAR

Poi dico che mettere in valigia le mie dipendenze vaso in quel vaso esportato. Il JAR esportato avrà tutte le sue dipendenze imballati in esso.

alt text http://www.ubuntu-pics.de/bild /97131/selection_016_mg6IDm.png

Non sono un esperto sul tema, ma ci sono soluzioni a tutti questi problemi di lavoro. Potrebbero darvi un mal di testa, ma alcune cose possono essere fatto solo questo modi (e sono abbastanza sicuro che il tuo problema con l'Entrust CSP è uno di quelli).

E 'possibile dare un'occhiata a OpenSign dal OpenOCES progetto . La magia avviene in org.openoces.opensign.client.applet.bootstrap.

Credo anche che JNLPAppletLauncher risolve lo stesso problema, ma non ho alcuna esperienza con i.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top