Tak for det - men det eksekverer filen forkert. De fleste programmer der eksekveres på den måde virker ikke som de skal ... jeg tror programmet ikke kan finde sine egne dll-filer osv. fordi det ikke ved hvilken sti det befinder sig i.
Hvordan gør jeg så programmerne eksekveres rigtigt? Kan jeg angive på en eller anden måde hvor computeren skal tro den befinde sig, inden den eksekverer programmet?
Jeg har kigget igen, og det er din løsning nummer 2 jeg bruger - altså den som skaber en instans af Runtime i stedet for at bruge den som fri funktionsklasse, og kører det hele gennem Process.
Det er den jeg bruger - som tilsyneladende virker, men som kører programmerne på en forkert måde, så de kommer med fejlmeddelelser (som ikke kommer når jeg bare kører dem normalt i Windows)
Fejl kan være: [2002-1-22][22:24:1] An internal error has occored. Error ID #1000 (i øvrigt underligt at der er stavefejl i sådan en fejlbesked)
ERROR: Cannot Find the pb.ini File
Derudover kommer der fejl inde i selve programmerne, de virker simpelt hen ikke som de skal - men programmerne opdager det typisk ikke selv, for det er vist ikke fejl de er parat på kan ske.
Prøv med noget mere komplekst end en browser - og noget der ikke er lavet af Microsoft. Der sker ikke fejl når jeg starter de programmer normalt, kun når jeg starter dem gennem java-programmet.
GTS er et program jeg selv har lavet - det er bare et eksempel, og det virker vist fint nok.
F.eks. skal HalfIRC startes, og det virker ikke første gang - først skal man indstille det (selvom det under normale omstændigheder ikke er nødvendigt), og så virker det anden gang. Det viser sig at en HalfIRC.ini som normalt er inde i HalfIRC-biblioteket er blevet oprettet.
Det beviser at jeg havde ret i min først antagelse om at programmet ikke ved hvor det selv bliver eksekveret fra - det virker som om selve exe-filen bliver kopieret over til mit java-program, og kørt derfra (uden sine tilhørende filer)
Med System.getProperty("user.dir") får du det direktorie hvor din virtuelle maskine er startet med program eksekvering. Det er klart at det også har betydning for exec metoden. Du kan prøve at sætte user.dir med System.setProperty("user.dir","c:\\Program Files\\GTS") og se om det ikke hjælper.
Jeg tror Niels har ret mht til at JVM'en ikke rigtig ved hvor den er henne i verden jeg har samme problem hvor jeg har en executable jar som skal loade nogle xml dokumenter den ikke kan finde af samme grund.
Så tak til dig Carsten for dette indlæg! Vil prøve det når jeg kommer hjem og kan kode alt det sjove men ikke må på arbejde :)
Nu ved jeg ikke hvad dit GTS program gør, men halfirc... er det en IRC klient eller sådan noget? Kunne det tænkes at hvis programmet er startet under en java process så er den måske undelagt JVM security eller sådan noget? Giver bare ikke helt mening hvis man kan starte en browser?
HalfIRC er en irc-klient til at bruge inde i Half-Life Cheating-Death er et antisnydeprogram til Counter-Strike Ligeledes er PunkBuster og Paladin - ingen af dem virker.
Det kan meget vel være at JVM beskytter på en måde - så spørgsmålet må vendes til at høre hvordan man fjerner den sikkerhed, eller omgår den.
Jeg lukker spørgsmålet, da det ikke lader til at der er nogen der kender en løsning på mit ret specifikke problem ... men mange tak for hjælpen, jeg lærte en masse andet :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.