Sådan erstattes den aktuelle Java-proces i Windows med JNA/JNI?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil erstatte den nuværende Java-proces med en ny, ligesom Unix exec gør. Der har allerede været et lignende spørgsmål her, men jeg foretrækker en løsning, der bruger så få hukommelser som muligt (det accepterede svar antyder at bruge ClassLoader s, hvilket kan føre til hukommelselækager, en lignende simpel løsning ville være at brug en anden proces bare for at starte den rigtige). Det kan helt sikkert gøres på en platformafhængig måde ved hjælp af JNI, og jeg tror jeg kan gøre det for Unix (og en løsning til Unix synes allerede at eksistere), men jeg ved næsten intet om den tilsvarende Windows API. Hvilken Windows-funktion skal jeg ringe? Har nogen gjort det allerede? [3] [6]

Bedste reference


Med Windows er der mange delsystemer at vælge imellem, der kører på bas OS, så det hjælper med at få en vis fornemmelse af, hvad du sigter efter. Hvis du for eksempel kan bruge biblioteket C run-time, kan du bare bruge familien \_exec() af funktioner, der ligner deres unix-fætre. Måske kan du ændre jniexec til at arbejde med Windows ved hjælp af disse. [7]

Andre referencer 1


Win32 API'en indeholder ikke byggeklodserne, men det er ret komplekst at bruge dem, og i det mindste tidligere har man brug for det nødvendige til ukodificeret funktionalitet.