webForumDet fria alternativet

Någon som känner för att hjälpa en nybörjare?

Java

17 svar · 615 visningar · startad av trexter.com

Medlem sedan apr. 20021 203 inlägg
Frågan#1

Jag har laddat ner SDK 2.yada-yada-någonting och sitter med alla filerna i en viss mapp. I denna finns lite andra olika mappar som t.ex. bin, demo, include osv... samt en src.zip. Ska jag zippa upp den? Vart ska isf innehållet läggas?

... när jag läste i min E-book om Java så stod det att jag skulle skriva så här för att göra ett Hello world-prog (fast utan siffror):

1: class HelloWorld {
2: public static void main (String args[]) {
3: System.out.println("Hello World!");
4: }
5: }

Sedan skulle man spara programmet med .java och därefter kompilera det med javac.exe. Här börjar problemet, två frågor...
1. Var ska jag lägga java-filen som ska kompileras?
2. När jag kör javac.exe öppnas ett svart fönster som stängs ner igen efter en halv sekund... känns inte riktigt rätt!
:)

Någon som vet?

Medlem sedan aug. 20021 752 inlägg
#2

1. Javac.exe (Java Compiler) är ett DOS program (Konsol) så du måste starta ett konsol för att köra det.
2. Du bör lägga till 2 miljö variabler, JAVA_HOME som ska peka på katalogen där jdk finns, och CLASSPATH som i ditt fall bara behöver peka på "Current Directory", dvs ./. Men det är bara börja,n, CLASSPATH kommer att växa :)
Du bör även lägga till javas bin katalog i din path (använd då JAVA_HOME variabeln och lägg bara till /bin)
3. Du kan spara din java fil vart du vill, det spelar ingen roll.
4. När du har sparat din java fil så startar du en konsol och går till katalogen där du sparade din java fil, skriv "javac DIN_JAVA_FIL.java", nu kommer den att kompileras, du har nu också en fil som slutar på ".class", för att köra ditt java program nu så skriver du "java DIN_JAVA_FIL" (OBS! ingen extension när du ska köra filen).

/Viktor

Medlem sedan mars 20007 896 inlägg
#3

src.zip behöver du inte röra alls. :)

Filen HelloWorld.java kan du lägga istort sett var som helst, det spelar ingen roll. Bara att kompilera med javac.exe, precis som boken säger - men det ska du göra via kommandoprompten.

Har du sparat HelloWorld.java i mappen C:\Programmering, t.ex., så öppnar du bara kommandoprompten ( Start > Kör och skriv "cmd" ). Du flyttar dig till din mapp:

cd \
cd Programmering

Sen kör du javac.exe och skickar ditt filnamn som attribut:

javac HelloWorld.java

Har du inte lagt till bin-katalogen i din PATH innan, så skriver du det här innan du kompilerar:

SET PATH=%PATH%; C:\j2sdk1.4\bin

Om du installerade Java-paketet till C:\j2sdk1.4 vill säga.

För att köra dina filer:

java HelloWorld

Notera att .class ska du inte ha med efter filnamnet.

Hoppas att min luddiga förklaring fick dig på rätt köl. :)

Medlem sedan mars 20007 896 inlägg
#4

Viktor> Du var lite snabbare där. ;)
Menar du inte miljövariabeln CLASSPATH? För det är ju inget underscore i den. :)

Medlem sedan aug. 20021 752 inlägg
#5

:r
Klart det ska vara det!

/Viktor

Medlem sedan apr. 20021 203 inlägg
#6

Tyvärr så förstår jag inte riktigt... kom ihåg att jag är så mycket nybörjare man bara kan bli! :)

SPiN skrev:

Sen kör du javac.exe och skickar ditt filnamn som attribut:

javac HelloWorld.java

Har du inte lagt till bin-katalogen i din PATH innan, så skriver du det här innan du kompilerar:

SET PATH=%PATH%; C:\j2sdk1.4\bin

Om du installerade Java-paketet till C:\j2sdk1.4 vill säga.

Ähum... varifrån ska jag köra det? I cmd eller? Förstår inte...

Medlem sedan apr. 20021 203 inlägg
#7

Jag antog att "PATH-grejen" ska skrivas i cmd...
men sedan när jag skriver javac hello.java så kommer:
javac är inte ett internt kommando, externt kommando, program eller kommandofil.

:(

Medlem sedan mars 20007 896 inlägg
#8

Var har du installerat J2 SDK? Ändrade du till din sökväg?

Medlem sedan mars 20007 896 inlägg
#9

Du kan också köra:

cd \
cd Programmering
C:\dinJavaKatalog\bin\javac HelloWorld.java

Istället för att lägga till värdet i PATH.

Medlem sedan apr. 20021 203 inlägg
#10

Nu börjar det hända gejor! Men när jag kör min fil :

 class HelloWorld {
     public static void main (String args[]) {
         System.out.println("Hello World!");
     }
 }

får jag ett felmeddelande:
Exception in thread "main" java.lang.NoClassDefFoundErrors: hello

Medlem sedan aug. 20021 752 inlägg
#11

Filnamnet måste vara samma som klass namnet, så om din klass heter HelloWorld måste filen heta "HelloWorld.java". Om det inte hjälper kan du prova med att köra programmet med
"java -classpath ./ HelloWorld"

/Viktor

Medlem sedan apr. 20021 203 inlägg
#12

Perfekt! Nu flyter det som bara den!
Tackar, tackar!

PS! Måste säga att jag är väldigt glad att jag bestämde mig för att lära mig java och inte vb som jag hade tänkt förrut. Med ett så bra språk och trevliga "utövare" som ni kan ju det här bli jätteskoj!
:)

Medlem sedan juni 200010 432 inlägg
#13

trexter.com skrev:

! Måste säga att jag är väldigt glad att jag bestämde mig för att lära mig java och inte vb som jag hade tänkt förrut. Med ett så bra språk och trevliga "utövare" som ni kan ju det här bli jätteskoj!
:)

Ja, där ser du :e

Medlem sedan mars 20007 896 inlägg
#14

En liten sak som jag märkte, men som tydligen inte spelade någon roll ( Man kan ju fråga sig varför? :q ) var att du hade glömt att deklarera klassen public. Det trodde jag att man faktiskt var tvungen till, men det verkar ju som att det inte behövdes. :)

public class HelloWorld {
...
Medlem sedan aug. 20021 752 inlägg
#15

WOW! Det fungerar utan public, har aldrig provat förut men det trode jag aldrig skulle fungera. Det fungerar tom med flera privata klasser i den klassen också. Varje dag ska man lära sig något nytt :)

/Viktor

Medlem sedan juni 200010 432 inlägg
#16

Default blir det public i det läget :)

Medlem sedan mars 20007 896 inlägg
#17

Hm, det kanske har kommit med den nya versionen av J2? Det står inget om att man måste deklarera med public i Java-tutorial på Sun, men i en del exempel används det - i andra inte. Jaja, spillerill. :)

Red.} Ah, där har vi svaret. :)
Är det något med de nya versionerna?

Medlem sedan dec. 19995 874 inlägg
#18

Man kan bara ha en publicklass i varje fil, men om man däremot inte deklarerar andra klasser som public så går det bra att ha flera klasser i samma fil, eftersom klassen som innehåller mainmetoden gärna vill ha ensamrätt på public :D

Om man inte skriver public på klassen som innehåller mainmetoden så kommer man bara åt den inom samma bibliotek, misstänker jag.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)