Ik gebruik een packages die gebruikt maakt van JNI om bijvoorbeeld de comport aan te spreken. Deze doet dat door middel van dll file’s onder windows en so file’s onder linux. Nu wil ik graag een packages maken die afhankelijk van het OS de juist dll file’s of so file’s laad.
Nu ben ik al wel een stukje opweg met het laden van de lib file’s die nodig zijn om de hardware te kunnen aanspreken. Met -Djava.library.path=”path” kan je het path opgeven waarin de VM naar de lib file’s moet zoeken en met System.loadLibrary(name) de juiste lib. laad. Dit heb ik goed aan het werk. Maar als ik nu een jar file maak en deze start met java -Djava.library.path=" path " -jar "myapp.jar" dan zeg de VM dat hij de lib file’s niet kan vinden. Ik zou graag willen dat hij ook in de jar file zelf naar de lib file’s zoekt. Weet iemand hoe dat mogelijk is.
Wat ik eigenlijk wil bereiken is dat mijn app. Gestart wordt en dat hij automatisch de juiste lib file’s laad die bij het OS horen. Wil dus een packages met daarin de werkelijke app. En de folder waarin de verschillende lib file’s te vinden zijn. De stucuur zou er als volgt moeten uitzien in de jar file’s:
> projectnaam folder // met werkelijke code van app.
> lib folder // met een sub indeling voor de OS’s met hun lib file’s
> lib\windows // lib file’s voor windows
> lib\linux // een sub indeling lib file’s voor linux
> lib\linux\i686\ // lib file’s voor i686 linux
> lib\linux\x86_64\ // lib file’s voor x86_64 linux
> lib\solaris// lib file’s voor solaris
> lib\mac_os_x// lib file’s voor mac_os_x
Voor andere OSén zou in de toekomst ook een sub indeling gemaakt kunnen worden in een 32 bits en een 64 bits systeem.
Op een of andere manier wou ik dus dynamisch het path willen aanpassen waar de app. zoekt naar de lib file die ik wil laden. Dit alles zou dan wel moeten gebeuren in de jar file. Nu weet ik niet helemaal zeker of dat wel mogelijk is, als het niet mogelijk is dan zou ik een lib. folder willen aanmaken in de zelfde folder waar de jar te vinden is. De app. moet dan nog wel dynamisch het path kunnen aanpassen waar de juiste lib file’s te vinden zijn.
Heeft iemand ideeën hoe ik dat alles het beste kan aanpakken, misschien zijn er wel opmerkingen dat ik het niet handig doe. Ik ben benieuwt naar de reacties.
Nu ben ik al wel een stukje opweg met het laden van de lib file’s die nodig zijn om de hardware te kunnen aanspreken. Met -Djava.library.path=”path” kan je het path opgeven waarin de VM naar de lib file’s moet zoeken en met System.loadLibrary(name) de juiste lib. laad. Dit heb ik goed aan het werk. Maar als ik nu een jar file maak en deze start met java -Djava.library.path=" path " -jar "myapp.jar" dan zeg de VM dat hij de lib file’s niet kan vinden. Ik zou graag willen dat hij ook in de jar file zelf naar de lib file’s zoekt. Weet iemand hoe dat mogelijk is.
Wat ik eigenlijk wil bereiken is dat mijn app. Gestart wordt en dat hij automatisch de juiste lib file’s laad die bij het OS horen. Wil dus een packages met daarin de werkelijke app. En de folder waarin de verschillende lib file’s te vinden zijn. De stucuur zou er als volgt moeten uitzien in de jar file’s:
> projectnaam folder // met werkelijke code van app.
> lib folder // met een sub indeling voor de OS’s met hun lib file’s
> lib\windows // lib file’s voor windows
> lib\linux // een sub indeling lib file’s voor linux
> lib\linux\i686\ // lib file’s voor i686 linux
> lib\linux\x86_64\ // lib file’s voor x86_64 linux
> lib\solaris// lib file’s voor solaris
> lib\mac_os_x// lib file’s voor mac_os_x
Voor andere OSén zou in de toekomst ook een sub indeling gemaakt kunnen worden in een 32 bits en een 64 bits systeem.
Op een of andere manier wou ik dus dynamisch het path willen aanpassen waar de app. zoekt naar de lib file die ik wil laden. Dit alles zou dan wel moeten gebeuren in de jar file. Nu weet ik niet helemaal zeker of dat wel mogelijk is, als het niet mogelijk is dan zou ik een lib. folder willen aanmaken in de zelfde folder waar de jar te vinden is. De app. moet dan nog wel dynamisch het path kunnen aanpassen waar de juiste lib file’s te vinden zijn.
Heeft iemand ideeën hoe ik dat alles het beste kan aanpakken, misschien zijn er wel opmerkingen dat ik het niet handig doe. Ik ben benieuwt naar de reacties.
A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."