java - Start en Scala Swing-app på Windows uden kommandovindue

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Swing app skrevet i Scala i en .jar fil. Jeg lavede en skrivebordsgenvej med kommandoen scala "filepathfilename.jar", som fungerer, medmindre det bringer op et kommandovindue først, der sidder i baggrunden, indtil jeg lukker programmet. Jeg vil gerne gøre dette gå væk.


Jeg tror på Java, du skal bruge javaw i stedet for java til dette formål. Jeg forsøgte at kopiere filen scala.bat til en ny fil kaldet scalaw.bat til og ændre linjen 24 til


if exist "\%JAVA\_HOME\%injavaw.exe" set "\_JAVACMD=\%JAVA\_HOME\%injavaw.exe" 


og linje 28 til


if "\%\_JAVACMD\%"=="" set \_JAVACMD=javaw


men (efter opdatering af skrivebordsgenvejen) får jeg stadig kommandovinduet op. Eventuelle ideer?





Opdatering : Jeg forsøgte at tilføje scala-library.jar til manifestet, men det virker ikke, jeg tror, ​​at stier er i forhold til jarens rod. En anden mulighed synes at være at omfatte hele scala-bibliotekets krukke i jarfilen (Oprettelse af en jarfil fra en Scala-fil), men jeg anser det ikke for en løsning.


Eller jeg kan udpakke krukken til dets bestanddele .class filer og bruge genvejen


javaw.exe -cp "\%SCALA\_HOME\%/lib/scala-library.jar";"filepath\" packageName.className


men ... det indebærer at udpakke krukken.


En anden semi-løsning, jeg har fundet, er at redigere genvejen, så kommandolinjen kører minimeret.





Løsning : Som svar på eugener skal du bruge javaw uden -jar-indstillingen, men angive jar-filen f.eks.


javaw -cp "\%SCALA\_HOME\%/lib/*";"C:/path/yourjar.jar" packageName.className


Hvis det er en Swing app, og du bruger biblioteket scala-swing, skal du også medtage det eller bruge * wildcard som ovenfor.

Bedste reference


Jeg anbefaler at starte din app direkte med javaw . Da Scala kompilerer i samme bytekode som Java - kan du gøre det. Glem ikke at tilføje standard scala biblioteker til klassepaden

Andre referencer 1


Det er klart angivet i java kommandoforklaringen, om -jar: [24]



  Når du bruger denne indstilling, er JAR-filen kilden til alle brugerklasser, og andre indstillinger for brugerklassebane ignoreres.



Gør en genvej med
javaw.exe -cp '\% SCALA\_HOME\% \ lib \ scala-library.jar'; '\% SCALA\_HOME\% \ lib \ scala-swing.jar'; 'C:/path/yourjar.jar' packageName.mainClassName
fungerede.


Løsningen indeholder derfor biblioteker + pakket målkode med -cp argument og bruger ikke -jar -knappen. Som også angivet som en løsning i spørgsmålet.

Andre referencer 2


Du kan forsøge at kompilere din bat fil til exe (jeg brugte quick batch file compiler). Jeg tror dette forhindrer kommandovindueudseende. Jeg brugte ikke Windows i lang tid, men jeg husker det hjalp mig nogle gange.