25. oktober 2007 - 18:55
Der er
10 kommentarer og 1 løsning
Opstart af extern program inde i Jar-filen
Hej.. jeg har lavet et program som tjekker hvilket styresystem der er i brug, og hvis det er windows så skal den starte et program.exe som jeg har compiled ind i jar-filen i Eclipse. er dettte muligt ? Har prøvet lidt forskelligt men det har ikke virker. På forhånd tak.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. oktober 2007 - 19:13
#1
Hvis filen er placeret i: /ext/program.exe inde i jarfilen, burde du kunne: Process.start("/ext/program.exe"); - Det er dog ikke testet...
25. oktober 2007 - 19:18
#2
Og i java er det selvfølgelig: Runtime.exec("/ext/program.exe"); :)
25. oktober 2007 - 19:21
#3
Runtime.getRuntime().exec("/ext/program.exe");
25. oktober 2007 - 19:40
#4
jeg har prøvet følgende: Runtime rt = Runtime.getRuntime(); Process prcs = rt.exec("/apps/PROGRAM.EXE"); og så lagt PROGRAM.EXE i en mappe som hedder apps i eclipse projektet....Men den fejler stadig... Hvis jeg fjerner /apps og lægger filen PROGRAM.EXE ved siden af jar filen virker det udemærket...
25. oktober 2007 - 19:42
#5
Ja, jeg har lige leget lidt med det. Og det er vist ikke så let som jeg troede. Jeg prøver lige at lave et lille eksempel...
25. oktober 2007 - 19:44
#6
Så tror jeg det lykkedes: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import javax.swing.JOptionPane; public class Main { public static void main(String[] arsg) { try { extractFileToDisk("ext/", "calc.exe"); Runtime.getRuntime().exec("ext/calc.exe"); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.toString()); e.printStackTrace(); } } private static boolean extractFileToDisk(String path, String fileName) { try { InputStream in = Main.class.getClassLoader().getResourceAsStream(path + fileName); File f = new File(path); f.mkdirs(); FileOutputStream out = new FileOutputStream(path + fileName); byte[] buffer = new byte[8192]; int read = 0; while ((read = in.read(buffer)) > 0) out.write(buffer, 0, read); out.flush(); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } return true; } }
25. oktober 2007 - 19:45
#7
Ovenstående eksempel pakker simpelthen filen ud på disken og kører det derfra. Struktur i jar-filen: /ext/calc.exe /META-INF/ etc...
25. oktober 2007 - 20:03
#8
Jeg når jeg prøver at afvikle følgende, sletter den calc.exe og opretter en ny tom udgave. Er det fordi jeg afvikler den i eclipse ?: public Licens() { try { extractFileToDisk("ext/", "calc.exe"); Runtime.getRuntime().exec("ext/calc.exe"); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.toString()); e.printStackTrace(); } } private boolean extractFileToDisk(String path, String fileName) { try { InputStream in = Licens.class.getClassLoader().getResourceAsStream(path + fileName); File f = new File(path); f.mkdirs(); FileOutputStream out = new FileOutputStream(path + fileName); byte[] buffer = new byte[8192]; int read = 0; while ((read = in.read(buffer)) > 0) out.write(buffer, 0, read); out.flush(); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } return true; }
25. oktober 2007 - 20:07
#9
Ja, du skal pakke det ind i en jar-fil. Ellers har det ingen effekt.
25. oktober 2007 - 21:09
#10
Så kom det til at virke.. tak for det... hvis du vil have pointene kan du bare lave et svar
26. oktober 2007 - 07:59
#11
Kommer her...
Kurser inden for grundlæggende programmering