Avatar billede theportal Nybegynder
09. februar 2003 - 20:39 Der 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

pft.
Avatar billede arne_v Ekspert
09. februar 2003 - 20:42 #1
Pak en executable jar-fil !
Avatar billede arne_v Ekspert
09. februar 2003 - 20:44 #2
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.
Avatar billede soreno Praktikant
09. februar 2003 - 20:45 #3
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 ?
Avatar billede arne_v Ekspert
09. februar 2003 - 20:45 #4
Bemærk dog at der (af grunde ukendt for mig) er forbløffende mange
PC'ere hvor det ikke virker.

Derfor er der en del som laver en lille .bat (for PC) og en lille
.sh for for Unix til at starte programmet med.
Avatar billede soreno Praktikant
09. februar 2003 - 20:46 #5
Jeg har fået det til at virke med win98/win2k/winxp.
Men det kræver at JRE er installeret.
Avatar billede theportal Nybegynder
09. februar 2003 - 20:55 #6
HVOR er det man pakker den jar fil ned? Er det i IDE'et eller med et pakkeprogram? :)
Avatar billede fiskesuppe Nybegynder
09. februar 2003 - 20:58 #7
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...
Avatar billede theportal Nybegynder
09. februar 2003 - 20:59 #8
Kunne ihvertfald være nice!
Avatar billede fiskesuppe Nybegynder
09. februar 2003 - 21:02 #9
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 .. :)
Avatar billede theportal Nybegynder
09. februar 2003 - 21:03 #10
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...
Avatar billede soreno Praktikant
09. februar 2003 - 21:07 #11
Bat filen laves f.eks. sådan:
@javaw.exe MinMain

(forudsat at der er path til javaw.exe)
Avatar billede arne_v Ekspert
09. februar 2003 - 21:13 #12
Du kan lave din jar fil med kommando linie toolet jar.

Eller så kan din IDE formentlig også lave en jar.
Avatar billede arne_v Ekspert
09. februar 2003 - 21:17 #13
SUN One Studio 4u1:
  File
  New
  Jar Packager
  Jar Recipe
Avatar billede theportal Nybegynder
09. februar 2003 - 21:22 #14
Hvordan skal jeg specificere min mainclass fil? Under manifest velsagtens, men hvordan? bare skrive filnavnet?
Avatar billede soreno Praktikant
09. februar 2003 - 21:25 #15
Nej, klassenavnet.
Hvis filen hedder "Main.java" så hedder klassen "Main".
Avatar billede arne_v Ekspert
09. februar 2003 - 21:30 #16
Du skal have en linie:

Main-Class: navn-på-din-main-class

se evt. http://java.sun.com/docs/books/tutorial/jar/basics/manifest.html
for flere detaljer.
Avatar billede arne_v Ekspert
09. februar 2003 - 21:30 #17
Jeg vil tro at du kan få SUN One Studio til at lave den for dig.
Avatar billede arne_v Ekspert
09. februar 2003 - 21:46 #18
Jeg prøvede lige.

Jar wizarden's sidste skærm-billede er manifest og der kan
man simpelthen rette i manifestet og tilføje linien
med Main-Class.
Avatar billede webster Nybegynder
09. februar 2003 - 22:22 #19
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.
Avatar billede simonvalter Praktikant
09. februar 2003 - 22:24 #20
hehe sad lige og tænkte det samme.
Avatar billede arne_v Ekspert
09. februar 2003 - 22:31 #21
webster>

Læs spørgsmålet !

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å.
Avatar billede arne_v Ekspert
09. februar 2003 - 22:35 #22
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.
Avatar billede webster Nybegynder
09. februar 2003 - 22:56 #23
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.

En hurtig søgning på google fandt: http://www.excelsior-usa.com/jet.html der ummidelbart lyder fornuftigt.
Avatar billede arne_v Ekspert
09. februar 2003 - 22:59 #24
Jet er så vidt jeg ved en ægte konvertering fra java byte code
til native exe.

Og derfor ikke afhængig af diverse java på ens system.

Men stadigvæk ikke ligefrem mainstream.
Avatar billede simonvalter Praktikant
09. februar 2003 - 23:10 #25
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
Avatar billede arne_v Ekspert
09. februar 2003 - 23:25 #26
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.
Avatar billede theportal Nybegynder
10. februar 2003 - 04:48 #27
Tak for de mange muligheder, dette har givet mig lidt at lege med!

Mange tak for hjælpen
Avatar billede theportal Nybegynder
10. februar 2003 - 14:53 #28
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

"Main-Class: VisualHello"

Hvad gør jeg galt?
Avatar billede arne_v Ekspert
10. februar 2003 - 16:13 #29
Du bruger vel ikke pakke ?

Fordi så er det jo:

Main-Class: pakkenavn.VisualHello
Avatar billede theportal Nybegynder
10. februar 2003 - 19:40 #30
Nope, har bare compilet en alm. java-fil til en class fil (som jo så blev til flere class-filer - ved ikke lige hvorfor)
Avatar billede arne_v Ekspert
11. februar 2003 - 10:21 #31
1 .java -> 1 .class kan jo godt bruge pakke.

Har du en package et-eller-andet linie øverst ?

Hvis du definerer flere klasser i samme .java fil, så
får du flere .class filer.

Undgå at definere flere klasser i samme java-fil medmindre der er
gode grunde til det.
Avatar billede theportal Nybegynder
11. februar 2003 - 15:32 #32
AH, mange mange tak! Så der var den, åbenbart fordi den automatisk sætter Package linjen ind i One Studio!

Mange tak!
Avatar billede arne_v Ekspert
11. februar 2003 - 15:39 #33
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester