Avatar billede baitianlong Nybegynder
10. august 2004 - 16:27 Der er 29 kommentarer og
1 løsning

applet notinited

Jeg er ved at lave en applet.

Den virker fint i appletviewer i Eclipse, men ikke når jeg kører den fra et html dokument.

html dokumentet ser således ud:

<html>
<body>
<center>
<applet
  codebase = "."
  code    = "Nyhedsbrev.class"
  name    = "NyhedsbrevApplet"
  width    = "700"
  height  = "400"
  hspace  = "0"
  vspace  = "0"
  align    = "middle"
>
</applet>
</center>
</body>
</html>

...og Classfilerne ligger i samme mappe. Når jeg vælger show console, står der:

java.lang.NoClassDefFoundError: Nyhedsbrev (wrong name: applet/Nyhedsbrev)

Jeg har prøvet at putte en anden fungerende applet ind og skrive dens navn i html dokumentet, og det virker fint.

Hjælp ! Det ligger på den her adresse:

http://83.25.13.42//newsletterapplet/newsletter.html
Avatar billede arne_v Ekspert
10. august 2004 - 17:08 #1
Jeg tror at du har en:

package applet;

øverst i din Nyhedsbruv.java - slet den, compile igen og upload igen, så
tror jeg at det virker !
Avatar billede baitianlong Nybegynder
10. august 2004 - 17:27 #2
Se det havde du jo ret i :) - sært at jeg ikke kunne gennemskue det.

Nu kører appletten, men den kommer med en fejlpopup:

NO JDBC class found.

Når jeg nu har udlovet 100 points, kan du så ikke hjælpe mig med den også ?
Avatar billede arne_v Ekspert
10. august 2004 - 17:31 #3
Selvfølgelig !

Din applet skal lave noget database ?
Avatar billede arne_v Ekspert
10. august 2004 - 17:33 #4
1)  Standard applet security tillader kun appletten at connecte til samme
    server som den er hentet fra.

2)  Hvis du skal bruge en anden jar fil (Med JDBC driver) så skal du:
      - pakke din applet i en jar fil
      - lade den jar fils manifest indeholde et Class-Path direcktiv som
        peger på den anden jar fil
Avatar billede baitianlong Nybegynder
10. august 2004 - 17:35 #5
hmm... Det fatter jeg ikke helt.

Lige nu kører det på min egen server, hvor der også kører mySql. Som sagt virker det hele fint i applet viewer (også databasedelen). Den skal bare connecte til localhost

Men databasedelen ligger dog i en anden klasse end gui'en. Men det skulle vel ikke skabe dette problem
Avatar billede arne_v Ekspert
10. august 2004 - 17:37 #6
Grunden til at det kører i appletviewer er formentlig at den har den rigtige jar fil i classpath.

re 1)

Bare web serveren som server HTML+applet og database serveren har samme IP adresse,
så går det.
Avatar billede baitianlong Nybegynder
10. august 2004 - 17:41 #8
Det hele er 'localhost'. Jeg bruger jar filen "mysql connecter stable...bla-bla" i Eclipse, så den skal jeg på en eller anden måde have med ned i web-mappen, eller hvad ? :)

Sådan lige en 1-2-3 metode til at få det til at virke, ville bære smukt
Avatar billede arne_v Ekspert
10. august 2004 - 18:01 #9
1)

Du pakker din applet klasse i en jar fil

2)

Din HTML refererer til den jar fil

3)

Manifestet i den jar fil sætter classpath til MySQL jar filen

4)

Din jar fil og MySQL jar filen uploades til samme directory på web serveren
Avatar billede arne_v Ekspert
10. august 2004 - 18:44 #10
OK ?
Avatar billede baitianlong Nybegynder
10. august 2004 - 18:55 #11
ikke helt endnu (sorry)

Jeg har gjort som du siger.

1) applet-klassen og databasekontakt-klassen er pakket i jarfil
2) html kode er nu:

<html>
<body>
<center>
<applet
  codebase = "."
  code    = "Nyhedsbrev.class"
  archive = "Newsletter.jar"
  name    = "NyhedsbrevApplet"
  width  = "700"
  height  = "400"
  hspace  = "0"
  vspace  = "0"
  align  = "middle"
>
</applet>
</center>
</body>
</html>

3) i applet/databasekontakt jar filen's manifest har jeg skrevet:

Manifest-Version: 1.0

Class-Path: mysqlconnector.jar

4) De to jar filer og html siden ligger samme sted

...men der kommer stadig den samme fejl (no JDBC driver found)
Avatar billede arne_v Ekspert
10. august 2004 - 19:17 #12
Kan du give en URL hvor jeg kan prøve ?
Avatar billede baitianlong Nybegynder
10. august 2004 - 19:32 #13
altså, jeg ved ikke helt hvad du mener. Men jeg har lavet en lille pakke til dig her, hvori mine javafiler og det hele er i. Jeg håber vi kan fikse det :)

www.legende.dk/DatabaseAppletTest.zip
Avatar billede arne_v Ekspert
10. august 2004 - 19:48 #14
Nu var der ikke hverken din jar fil eller manifest i den ZIP.

Da jeg lavede et manifest og lavede en ny jar fil så virkede det !

C:\e4>type MANIFEST.MF
Class-Path: mysqlconnector.jar

C:\e4>jar cvfm Newsletter.jar MANIFEST.MF *.class
added manifest
adding: DatabaseKontakt.class(in = 2487) (out= 1397)(deflated 43%)
adding: Nyhedsbrev$1.class(in = 495) (out= 329)(deflated 33%)
adding: Nyhedsbrev$2.class(in = 860) (out= 515)(deflated 40%)
adding: Nyhedsbrev.class(in = 3342) (out= 1827)(deflated 45%)
Avatar billede arne_v Ekspert
10. august 2004 - 19:49 #15
NB: det er vigtigt at der er et linie skift efter sidste linie i manifestet.

(og du behøver ikke ligeg version ind - det gør jar selv)
Avatar billede baitianlong Nybegynder
10. august 2004 - 20:02 #16
Det beklager jeg. Jeg havde bare lagt javafilerne og jar(mysqlconnector) og html siden..

Jeg ved bare ikke helt hvad dine kommentarer betyder (undskyld, hvis jeg er en spade her), men her er en pakke, hvor jar filen med class-filerne er med, gider du så sende mig de færdige pakker ?! Så kan jeg selv lige checke manifest filen, og hvad der står i den nu.

www.legende.dk/DatabaseAppletTest.zip

jesper *snabela* legende.dk

På forhånd tak, som sædvanligt smuk hjælp fra dig :)
Avatar billede arne_v Ekspert
10. august 2004 - 20:08 #17
Dit manifest mangler simpelthen Class-Path linien !
Avatar billede arne_v Ekspert
10. august 2004 - 20:08 #18
Email på vej.
Avatar billede baitianlong Nybegynder
10. august 2004 - 20:27 #19
Jeg har modtaget din email, og den melder ikke fejl mere. Men når jeg vælger maaned og aar kommer der stadig ikke noget i tekstfeltet, selv om databasen er klar og sat (og henter og viser fint i applet viewer). Jeg ved udmærket godt at du forlængst har indtjent dine points, og jeg vil gerne acceptere uden rynket pande :). Men så skal jeg oprette et nyt spørgsmål og sætte folk ind i tingene. Det kunne være smukt hvis du ville føre den 10 cm mere igennem og måske finde ud af hvorfor der ikke kommer det hentede nyhedsbrev i feltet, når man vælger det.

1) Jeg giver dig points'ne og takker mange gange
2) Jeg hæver til 200 points og du hjælper mig med at få den helt fungerende

Jeg håber ikke du er alt for irriteret over mine problemer.

Med venlig hilsen
Jesper / legende.dk

hvad siger du ?
Avatar billede arne_v Ekspert
10. august 2004 - 20:40 #20
Jeg prøver lige at kigge lidt på kildekoden.
Avatar billede baitianlong Nybegynder
10. august 2004 - 20:44 #21
ok, det er smukt. Tak for det :)
Avatar billede arne_v Ekspert
10. august 2004 - 20:52 #22
Følgende er ihvertfald galt:

public class DatabaseKontakt {
    String ipadresse = "localhost";  // <-------------

applet køres på client så localhost vil blive opfattet som client PC.

Der skal være en server adresse.
Avatar billede baitianlong Nybegynder
10. august 2004 - 21:03 #23
ok, det er noteret.

Men det kan ikke være der fejlen ligger, når jeg kører det på min egen maskine. For der er databasen jo netop localhost :) (klient såvel som server)

...
Avatar billede arne_v Ekspert
10. august 2004 - 21:07 #24
Korrekt.

Men det er megets vært for mig a teste.

Kan du ikke rette, compile, lave en ny jar (husk manifest) og uploade så jeg kan
prøve http://83.25.13.42//newsletterapplet/newsletterjar.html igen
Avatar billede baitianlong Nybegynder
10. august 2004 - 21:08 #25
ok :))

et øjeblik
Avatar billede baitianlong Nybegynder
10. august 2004 - 21:17 #26
Hey... Måske var det alligevel nok :)

http://83.25.13.42//newsletterapplet/newsletterjar.html

Jeg har skiftet localhost med ipadressen i Databasekontakt.java og det lader til at virke, her viser den pludselig indholdet fra databasen. Prøv lige med en måned fra 1-12 og et år fra 2002-2004 (dog ikke over aktuel maaned) ...og hvis du gider, så giv mig en kommentar om den generelle kodning

Points hævet til 200, og på forhånd tak for en smuk hjælp :)
Avatar billede arne_v Ekspert
10. august 2004 - 21:23 #27
Det virker også for mig nu.

Et par smånoter:

1)  det er måske lidt risikabelt med applet--(JDBC)--database, fordi
    ondsindede brugere kan downloade applet, decompile den og se
    IP adresse + database + brugernavn + password

2)  JTextArea kan ikke vise HTML - det er der en ande Swing komponent som kan
Avatar billede baitianlong Nybegynder
10. august 2004 - 21:30 #28
til(1): Der er en php side, der checker password og brugernavn, inden man kommer så langt,

Det er faktisk det (2) der er lidt noget møg, for lige nu virker den jo "omvendt". Det skulle være sådan lidt hen af dreamweaver hvor man skriver sådan ligesom i word (med en bold knap og en italic knap osv.), og html koden genereres, men her er det på nuværende tidspunkt omvendt. Men kan generere html kode og se resultatet. Jeg har ikke fundet andre JComponents end JLabel, der kan vise html kode, men den er ikke redigerbar. Jeg er lidt kørt fast i dette (i ugevis), og ved ikke hvad jeg skal gøre. Men det finder "vi" nok ud af i de næste par uger :) Jeg ville elske at høre dit forslag, hvis det er.

I mellemtiden smider jeg 200 points og noget god karma din vej, og så snakkes vi nok snart igen.

Tusinde tak for hjælpen (og indsigten)

Med venlig hilsen
Jesper / legende.dk
Avatar billede mikkelbm Nybegynder
10. august 2004 - 21:36 #29
JEditorPane (og jeg mener også JTextPane) kan vise HTML.
Avatar billede arne_v Ekspert
10. august 2004 - 21:38 #30
Prøv og kig på JEditorPane med type text/html !
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