Gå til innhold

Kjør et python-script (.pyw) i java


Anbefalte innlegg

Skrevet

Jeg har et pythonscript jeg gjerne skulle ha kjørt fra et javaprogram.

Jeg skal ikke ha tak i noen verider eller noe, bare kjøre scriptet som om jeg hadde dobbelklikket på det selv.

Videoannonse
Annonse
Skrevet
Jeg har et pythonscript jeg gjerne skulle ha kjørt fra et javaprogram.

Jeg skal ikke ha tak i noen verider eller noe, bare kjøre scriptet som om jeg hadde dobbelklikket på det selv.

 

Jython

Skrevet (endret)

Hvis det er bare deg som skal bruke det, så kan du jo bruke dette:

 

Runtime.getRuntime().exec(
		"python script.pyw", // Filen du skal kjøre
		 null, // Argument listen. Kan være null
		 new File(".") // Så filen blir kjørt fra "current directory"
		);

 

Håper det hjalp. :)

Endret av RavnTM
Skrevet
Runtime.getRuntime().exec(
		"python script.pyw", // Filen du skal kjøre
		 null, // Argument listen. Kan være null
		 new File(".") // Så filen blir kjørt fra "current directory"
		);

 

Takk for svar, men dette fungerte ikke. Det gikk å kompilere, men når jeg kjørte programmet fikk jeg denne meldingen:

Exception in thread "main" java.io.IOException: Cannot run program "Sonicwall.py
w" (in directory "."): CreateProcess error=193, %1 is not a valid Win32 applicat
ion
	at java.lang.ProcessBuilder.start(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at Ping2.main(Ping2.java:32)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32
application
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(Unknown Source)
	at java.lang.ProcessImpl.start(Unknown Source)
	... 4 more

 

Jeg fant imidlertid ut hvordan man kan gjøre det. Det eneste jeg gjorde var å endre ffra .pyw til .py på pythonscriptet og endre stien i disse kodelinjene:

try {
		Runtime r = Runtime.getRuntime();
		Process p = r.exec("cmd /c E:\\Java\\Sonicwall.py");
		p.waitFor();
		BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
		String line = "";
		while ((line = br.readLine()) != null)
		{
			System.out.println(line);
		}
		p.waitFor();
	} 
	catch (Exception e) 
	{
		e.printStackTrace();
	}

 

Nå kjører scriptet helt uten problemer.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...