windows - Sådan oprettes indfødte binære filer til din Java-app?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg undrer mig over, hvordan man pakker en Java-applikation til en indbygget binær til Windows, Linux og Mac OS X.


Jeg ved, at Minecraft gør dette, men jeg kan ikke regne ud hvordan. Dette er hvad jeg vil gøre:



  • Fra NetBeans (helst) eller Eclipse skal du bygge de tre binære filer automatisk.

  • Medtag native biblioteker til OpenGL et. alle.

  • Beskyd min kode, hvis det er muligt.



Hvis der er nogen måde at efterligne Minecraft auto-opdateringsfunktionen, så er det helt fantastisk.


Så er der nogen værktøjer til rådighed for dig, eller skal jeg skrive en stor del af XML for at opnå dette?

Bedste reference


For at lave en indbygget binær til Windows, ville du bruge et værktøj som Launch4J. På OSX kan du bruge JarBundler. Minecraft distribuerer blot jar-filen til Linux. Jeg er ikke opmærksom på en indbygget binærpakker til Linux. [3] [4]


Du kan også kompilere din Java-kode via GCJ, men det er sandsynligvis ikke, hvad du vil, da der er begrænsninger og kompatibilitetsproblemer der. De indfødte bundlere som Launch4j og JarBundler kan kun pakke din jarfil og bruge en ægte JRE til at udføre den.


Hvad angår integration med NetBeans eller Eclipse, skal du sandsynligvis skrive din egen ant-build-fil, især da løsningen varierer fra den ene platform til den næste.

Andre referencer 1


Hvis du bruger Java 9, kan du også bruge Java 9 Modularization & jlink til at sende en nativafhængig indbygget app. [5]


Der er også maven-jlink-plugin der kunne hjælpe her. [6]

Andre referencer 2


Tag et kig på GCJBuilder plugin til eclipse. Ikke sikker på om den understøtter kryds kompilering som kommandoen GCJ compiler gør. [7] [8]

Andre referencer 3


Hvis appen har en GUI og kan distribueres fra et websted, se i Java Web Start. JWS leveres af Oracle, og giver automatisk opdatering blandt mange andre funktioner.


Bemærk, at JWS bruger Jar-filer, så ingen konvertering er nødvendig.

Andre referencer 4


Jeg har brugt JSMooth til dette tidligere: http://jsmooth.sourceforge.net/
Som omtalt forinden søger denne wrapper kun en ægte JRE til at køre den - den kommer ikke med en bunden JRE. [10]