/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Jar kompilerings/eksekverings problem :/
Fra : Simon [2700]


Dato : 06-12-03 12:35

Hej,

jeg må hellere starte med at sige jeg har læst runes tråd længere nede..
og jeg kan godt få compileret en jar fil med min main.java og Keyboard.java
som er de
to klasser jeg bruger, den laver også et fint manifest hvor den rigtige main
klasse (main) er erklæret.
den kommer sådan set heller ikke med nogen fejl når jeg kører programmet
(dobbelt klikker på jar filen, eller skriver "javaw -jar fil.jar" i kommando
prompten), den river bare min cpu op på 100% load... jeg har også prøvet at
lave en med netbeans 3.5.1 som er det ide jeg bruger, og den jar fil virker
fint så længe det er i netbeans den eksekveres, når jeg prøver at eksekvere
den udefra så laver den samme problem...

jeg har også prøvet at lave en simpel en istedet, hvor det eneste programmet
lavede var at skriev "hello world" men det samme problem forekom, den loader
100% på min cpu ?
Den klasse så sådanne ud:

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

nå tænker man så, hvad går der så galt ? så fik jeg fat i rune, og fik hans
jar fil, og decompilerede class filen for at se om den var speciel, kunne
ikke lige finde noget, så jeg pakkede det hele ud og prøvede at compilere en
jar fil igen, og sørme om den så ikke virkede....

så tænkte jeg om det måske er de der navn$.class filer, for dem kan jeg ikke
finde, jeg har søgt hele min hdd igennem, og jeg synes ikke jeg kan finde ud
af om de overhovedet bliver lavet hos mig ? er der nogen der kan hjælpe, er
det her problemet ligger og hvad kan jeg gøre ? jeg kan ikke finde de filer,
og ved ikke om det er dem der laver problemerne... :((

jeg har postet mine java filer samt jar og manifest filen i dk.binaer
kl.12.31 (06-12-2003) "Simon java".

mange tak for hjælpen og god weekend.

mvh.Simon




 
 
Peter Lind (06-12-2003)
Kommentar
Fra : Peter Lind


Dato : 06-12-03 13:57

Simon [2700] wrote:
> Hej,
>
> [problemer med jar fil]

Hej Simon - jeg har hentet dine filer fra dk.binær, og de fungerer fint her
hos mig.

> den kommer sådan set heller ikke med nogen fejl når jeg kører
> programmet (dobbelt klikker på jar filen, eller skriver "javaw -jar
> fil.jar" i kommando prompten), den river bare min cpu op på 100%
> load...

Ja, det sker også hvis jeg dobbeltklikker. Men dit program er jo et
shell-program, eller hvad det nu hedder - det skriver i stdout, og læser fra
stdin, så det skal have et terminalvindue at skrive i og læse fra.
Jeg skriver "java -jar fil.jar" i kommandoprompten og det fungerer perfekt.
Hvis du vil have programmer der kan startes med dobbeltklik, så er du nødt
til at lave dem med egen brugerflade.

> jeg har også prøvet at lave en med netbeans 3.5.1 som er det
> ide jeg bruger, og den jar fil virker fint så længe det er i netbeans
> den eksekveres, [...]

Ja, men NetBeans har også et vindue som den skriver output i, og læser input
fra - den bruger java og ikke javaw til at køre programmet. Der ligger
forskellen.

-

> så tænkte jeg om det måske er de der navn$.class filer, for dem kan
> jeg ikke finde, jeg har søgt hele min hdd igennem, og jeg synes ikke
> jeg kan finde ud af om de overhovedet bliver lavet hos mig ?

navn$.class filer bliver kun lavet hvis man har nogle unavngivne klasser i
sit program.
Jeg laver f.eks ofte ActionListeners (til Swing programmer) på denne måde:

addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// gør et eller andet
}
});

Den kodestump laver en ny klasse, der implementerer ActionListener
interfacet, men klassen har ikke noget navn. Derfor bliver den blot kaldt
navnetpådenklassedenlavesi$.class

Du har ikke nogle steder i dit program, hvor du laver den slags klasser, så
de optræder ikke hos dig. Hvis de endelig skulle optræde vil det ALTID være
i samme directory som de øvrige klasser.

-

Men dit problem skyldtes blot at du ikke kan/må/skal bruge javaw (som
dobbeltklik også kalder) til programmer der benytter System.out og
System.in.

-

En anden lille detalje, som dog ikke har nogen indflydelse på
funktionaliteten. - i din Keyboard klasse er alting static, det er ikke en
god ide, og heller ikke nødvendigt. Prøv at fjerne alle static, og opret et
Keyboard objekt i din main-klasse, i denne her stil:

Keyboard keyboard = new Keyboard();
....
while( run )
{
...
a = keyboard.readDouble();
...
}

Det er meget pænere. Static skal så vidt muligt altid undgåes, medmindre det
er absolut nødvendigt.

Mvh
Peter Lind



Simon [2700] (06-12-2003)
Kommentar
Fra : Simon [2700]


Dato : 06-12-03 16:30


> Ja, det sker også hvis jeg dobbeltklikker. Men dit program er jo et
> shell-program, eller hvad det nu hedder - det skriver i stdout, og læser
fra
> stdin, så det skal have et terminalvindue at skrive i og læse fra.
> Jeg skriver "java -jar fil.jar" i kommandoprompten og det fungerer
perfekt.
> Hvis du vil have programmer der kan startes med dobbeltklik, så er du nødt
> til at lave dem med egen brugerflade.

tak nu virker det jo :)
mvh.Simon



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste