09. februar 2003 - 20:39Der er
30 kommentarer og 3 løsninger
Compile til standalone?
Hej!
Jeg er ret nybegynder i Javasproget og har lige et spørgsmål mht. kompilering. Jeg bruger Sun One Studio 4 til at lave mine ting i.
Spørgsmålet er så; hvordan gør jeg så jeg får en fil ud der kan eksekveseres uden at man skal ud i cmd-prompt og skrive "java HelloWorld"? Altså så man får en slags .exe fil, som da man compilede i Visual Basic :P
Du kan pakke alle dine class filer ned i en jar-fil og ved at putte navnet på main class ind i manifest, så kan den udføres enten med:
java -jar foorbar.jar
eller (og det er nok det som vil interessere dig) hvis Java er installeret rigtigt på PC, så kan man dobbelt-klikke på jar-filen i Windows Explorer og så kører den.
Når man kompilere java filer så genereres der bytecode. Det bytecode skal fortolkes før at det kan forstås af Operativ Systemet. Det gør java.exe for dig og det kan du ikke undgå.
Du kan dog lave en jar fil som der kan eksekveres ved dobbeltklik - kunne det være interessant ?
ExpNote-klienten er programmeret i Java men startes alligevel med en EXE-fil - lidt underligt? I ExpNote kan man kan læse at InstallAnywhere fra Zero G Software blev benyttet i en del af programmet? Kan dette program altså lave class/jar -> exe eller hvordan har de gjort det? For det ser ud til at være muligt...
Det er jo ikke meningen at konvertere til EXE, for så kan man lige så godt lære C# el.lign. Det var bare en lidt underlig ting jeg lagde mærke til, så det kan være arne_v kan forklare hvordan de har gjort .. :)
Det ville bare være rart hvis man nu kunne gøre sine class-filer lidt mere windows venlige - men det med .bat filen må jo så være løsningen? Lader spørgsmålet stå lidt endnu...
Det er lidt utroligt hvor uvillige folk er til at svare på det her klassiske spørgsmål. Det er muligt og mest korrekt at lave en jar fil der kan eksekveres ja, men på mange systemer virker det altså ikke. Hvis man ønsker at få spredt sine programmer så man kan se dem i brug, så er .exe filer nu engang ofte nødvendige for at få folk til at køre java programmer da java blandt "normale" brugere ikke har et vandvittigt godt ry.
http://www.e-t.com/jshrink.html er et af tusindvis af programmer der muliggør at lave en binær fil ud fra en .jar fil. Spørgsmålet har været meget ofte stillet så prøv også at søg i ekspertens svar, omend du skal et stykke tilbage for at finde svar på det der egentligt blev spurgt om.
Han spurgte ikke hvordan han lavede en EXE fil fra java - han spurgte hvordan han fik den funktionalitet at han kunen eksekvere et program uden at åbne et vindue og aktivere java.
En eksekverbar jar-fil er det korrekt svar på det spørgsmål.
Det er den metode som er bygget ind i Java. Den metode som bruges af de fleste java programmører. Den metode som virker på flest platforme. Den metode som der er support på.
Og med hensyn til jshrink, så kan man læse på det link du refererer til at den bruger en eksisterende JRE på maskinen via lidt diverse snusen omkring på maskinen.
Der er absolut ingen garanti for hverken at det virker eller er kompatibelt med kommende java versioner.
arne_v >> Er muligt, jeg havde afprøvet obsfucator delen af jshrink og var det eneste link jeg havde bookmarket.
At lave en .exe fil er desværre den eneste løsning hvis han med et enkelt klik vil kunne køre et java program på alle windows. Jeg vil give dig helt ret i at det ikke er nogen smart eller køn løsning, men hvis han lige har skiftet over til java fra vb så er det da at foretrække at han kan få lavet nogle programmer der let kan blive anvendt.
hvis man er til jbuilder har version 8 også en Native Executeable builder hvor den du har muligheden for at lave windowsgui.exe/ windowsconsole.exe /solaris/ binary /linux binary /macos binary + en archive builder der laver din .jar
Den kom allerede i JBuilder 7, men det er ikke en konvertering fra java byte code til native executable, men ligesom jshrink'en en executable wrapper der starter JVM og kører java bytecode i den.
Nu har jeg fået lavet min jar fil, men når jeg executer den så får jeg atvide at den ikke kan finde main-class - selvom jeg har dobbelt-trippelt tjekket at jeg har stavet det rigtigt inde i manifestet
Det er sådan set også en god ide altid at bruge pakker.
Man skal bare lige vende sig til at pakke-navnet så skal med nogen steder.
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.