Avatar billede krukken Mester
20. oktober 2004 - 14:14 Der er 41 kommentarer og
1 løsning

Opretter objekt af klasse som ligger i en fil ved siden af.

Hej,

Jeg har siddet og lavet nogle applets på en Windows maskine - og har nu flyttet disse klasser over på en Linux redhat 9.0.

Jeg har lavet to klasser. Hvor jeg i den ene klasse opretter et objekt af klassen som ligger i filen ved siden af. På windows-maskinen finder den klassen automatisk, men helt så let får det ikke på Unix.

Hvad skal jeg skriver i min fil for at kunne oprette et objekt af klassen?

Jeg har prøvet med:
import klassenavn;

Men det virker ikke.
Avatar billede arne_v Ekspert
20. oktober 2004 - 14:40 #1
Prøv og sæt classpath til det dir hvor de ligger i.

command line:

-classpath /home/krukken/javaprog

IDE:

specifikt for IDE

samme pakke => import ikke nødvendig
Avatar billede krukken Mester
20. oktober 2004 - 14:44 #2
Jamen er det ikke når det skal køres? Det er en applet jeg forsøger at compile.
Avatar billede arne_v Ekspert
20. oktober 2004 - 14:45 #3
Nej javac tager også -classpath
Avatar billede krukken Mester
20. oktober 2004 - 15:20 #4
Okay - det virker:-) Tak skal du have. Må jeg spørge dig om en ting til?

I mit program bruger jeg javax.something.Timer. Denne findes ikke i compitleren på Linuxen.  Og den som ligger i java.util.Timer er vist til tråde.

Jeg bruger en timer til at søgerfor at applettel opdatere sig selv. Altså ved at sætte timeren til 1 sekund, og når timeren er udløbet skal den opdaterer sig selv.

Har du et forslag til hvordan jeg kan gøre det istedet for - findes Timer-klassen et andet sted hvor jeg kan bruge den?

Du må altså godt ligge et svar - du giver jo som altid svar på et spørgsmål. Jeg synes at det er rigtig fedt at der er sådan nogle som der, der gider at hjælpe folk i knibe. Når jeg kigger på listeren over de spørgsmål jeg har stillet her på siden, tror jeg du har svaret på 75%:-)
Avatar billede arne_v Ekspert
20. oktober 2004 - 15:27 #5
javax.swing.Timer burde også findes i din Linux java.

Hvilken version java kører du med ?
Avatar billede arne_v Ekspert
20. oktober 2004 - 15:28 #6
svar
Avatar billede krukken Mester
20. oktober 2004 - 15:49 #7
hmm - nu spørger jeg måske lie dumt - men når jeg skriver javac på linux, kaldes gij så?

I hvert fald kan jeg ikke få fat på noget versionsnummer for java - men gij er version 3.2.2
Avatar billede arne_v Ekspert
20. oktober 2004 - 16:08 #8
Hvad pokker er gij ?

Nå en hurtig googling viste at gij er en del af GCC.

Jeg vil klart anbefale dig at hente og bruge en SUN Java eller IBM Java eller BEA Java
på Linux fremfor GCC's gjc og gij.
Avatar billede krukken Mester
20. oktober 2004 - 16:15 #9
Hmmm - skal jeg så til at installere java på Linux:-( Det har jeg vist aldrig prøvet. Er det svært?
Avatar billede arne_v Ekspert
20. oktober 2004 - 16:18 #10
Avatar billede krukken Mester
20. oktober 2004 - 16:43 #11
Okay - nu har jeg hentet og installeret java ved at sige ./jdk1.5.0_<version>

Hvordan sætter man så den classpath - så man kan skrive javac alle steder(ligesom i windows?
Avatar billede arne_v Ekspert
20. oktober 2004 - 16:50 #12
Den skal ikke i CLASSPATH men i PATH.

Afhængig af shell skal den i .login eller .cshrc eller i .bashrc
Avatar billede krukken Mester
20. oktober 2004 - 16:53 #13
og hvad skal jeg skrive i den?

echo $SHELL siger bash. Hvilken fil skal jeg så skrive i? Og hvad skal jeg skrive?
Avatar billede arne_v Ekspert
20. oktober 2004 - 16:55 #14
prøv:

cd $HOME
cat .bashrc

og se om ikke det giver sig selv

ellers så skal jeg i aften kigge på min Linux box
Avatar billede krukken Mester
20. oktober 2004 - 16:58 #15
hmmm - der står nogle få ting i .bashrc - men det er ikke meget, så jeg tror ikke det giver sig selv:-(
Avatar billede arne_v Ekspert
20. oktober 2004 - 18:19 #16
[arne@arne2 arne]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/java/jdk1.3.1/bin

export PATH

JAVA_HOME=/usr/java/jdk1.3.1

export JAVA_HOME

unset USERNAME
Avatar billede krukken Mester
20. oktober 2004 - 18:53 #17
hvad skal der så i .bashrc?
Avatar billede arne_v Ekspert
20. oktober 2004 - 18:54 #18
Ingenting.

.bash_profile kalder .bashrc
Avatar billede krukken Mester
20. oktober 2004 - 19:22 #19
Hmmm - det hjalp lidt. Hvis jeg skriver java tror jeg at det er den nye version der bliver kaldt. Men hvis jeg skriver javac så siger den stadigvæk noget med gcj. Og den kende heller ikke javax? Har du en ide om hvad jeg skal gøre.

Du skal selvfølgelig nok få nogle flere point - det er vist mere omfattende en først antaget:-)
Avatar billede arne_v Ekspert
20. oktober 2004 - 19:44 #20
Hvad siger:

echo $PATH

?
Avatar billede krukken Mester
20. oktober 2004 - 19:55 #21
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/tmp/jdk1.5.0//bin:/root/bin:/tmp/jdk1.5.0/bin:/root/bin:/tmp/jdk1.5.0//bin:/tmp/jdk1.5.0//bin:/tmp/jdk1.5.0//bin
Avatar billede krukken Mester
20. oktober 2004 - 19:55 #22
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr
/sbin:/usr/bin:/usr/X11R6/bin:/tmp/jdk1.5.0//bin:/root/bin:/tmp/jdk1.5.0/bin:/root
/bin:/tmp/jdk1.5.0//bin:/tmp/jdk1.5.0//bin:/tmp/jdk1.5.0//bin
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:00 #23
Tja.

Den ser lidt rodet ud.

Du skulle nok forsøge at slippe af med duplikater.

Men start evt. lige med at logge ud og ind igen og check igen.

Så er der vist en // hvor der kun skulle være en /.

Og hvis du vil være helt sikker på at få fat i den rigtige så flyt den forrest.
Avatar billede krukken Mester
20. oktober 2004 - 20:10 #24
Jamen det er hele min .bash_profil jeg har angivet. Hvor mon de andre bliver lagt til $PATH?
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:19 #25
Ingen vi kaster os ud i den helt store øvelse. Kan du så ikke lige checke om:

/tmp/jdk1.5.0/bin/javac Foobar.java

virker ?
Avatar billede krukken Mester
20. oktober 2004 - 20:30 #26
Nu virker det sku. jeg flyttede det helt op for oven, og flyttede lidt rundt på nogle filer - Og nu compiler den bare helt fint:-)
Avatar billede krukken Mester
20. oktober 2004 - 20:32 #27
Men lykken varer kun kort:-(

Når jeg går ind på den side hvor filerne er placeret får jeg følgende exception i min JVM:
java.lang.UnsupportedClassVersionError: Compass (Unsupported major.minor version 49.0)

    at java.lang.ClassLoader.defineClass0(Native Method)

    at java.lang.ClassLoader.defineClass(Unknown Source)

    at java.security.SecureClassLoader.defineClass(Unknown Source)

    at sun.applet.AppletClassLoader.findClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at sun.applet.AppletClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at sun.applet.AppletClassLoader.loadCode(Unknown Source)

    at sun.applet.AppletPanel.createApplet(Unknown Source)

    at sun.plugin.AppletViewer.createApplet(Unknown Source)

    at sun.applet.AppletPanel.runLoader(Unknown Source)

    at sun.applet.AppletPanel.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

java.lang.UnsupportedClassVersionError: Actuel (Unsupported major.minor version 49.0)

    at java.lang.ClassLoader.defineClass0(Native Method)

    at java.lang.ClassLoader.defineClass(Unknown Source)

    at java.security.SecureClassLoader.defineClass(Unknown Source)

    at sun.applet.AppletClassLoader.findClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at sun.applet.AppletClassLoader.loadClass(Unknown Source)

    at java.lang.ClassLoader.loadClass(Unknown Source)

    at sun.applet.AppletClassLoader.loadCode(Unknown Source)

    at sun.applet.AppletPanel.createApplet(Unknown Source)

    at sun.plugin.AppletViewer.createApplet(Unknown Source)

    at sun.applet.AppletPanel.runLoader(Unknown Source)

    at sun.applet.AppletPanel.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)
Hvad fanden betyder det?
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:35 #28
Prøv og compile med:

javac -source 1.3 -target 1.1 -classpath . DinApplet.java
Avatar billede krukken Mester
20. oktober 2004 - 20:40 #29
Det hjalp lidt men nu får jeg følgende exception istedet for:
java.sql.SQLException: Unable to connect to any hosts due to exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)

    at com.mysql.jdbc.Connection.createNewIO(Connection.java:1719)

    at com.mysql.jdbc.Connection.<init>(Connection.java:432)

    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:400)

    at java.sql.DriverManager.getConnection(Unknown Source)

    at java.sql.DriverManager.getConnection(Unknown Source)

    at Database.<init>(Database.java:19)

    at Compass.init(Compass.java:32)

    at sun.applet.AppletPanel.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:42 #30
Det betyder at din applet forsøger at connecte til en anden host end den som
den er hentet fra.

Det ser ud som om du forsøger at connecte til localhost - og en applet kører
jo på client, så ....
Avatar billede krukken Mester
20. oktober 2004 - 20:45 #31
He he - det fandt jeg også lige ud af:-) Nu har jeg angivet maskinens ip istedet - og får exceptionen:
java.sql.SQLException: Data source rejected establishment of connection,  message from server: "Host '192.168.1.100' is not allowed to connect to this MySQL server"

    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:589)

    at com.mysql.jdbc.Connection.createNewIO(Connection.java:1654)

    at com.mysql.jdbc.Connection.<init>(Connection.java:432)

    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:400)

    at java.sql.DriverManager.getConnection(Unknown Source)

    at java.sql.DriverManager.getConnection(Unknown Source)

    at Database.<init>(Database.java:19)

    at Compass.init(Compass.java:32)

    at sun.applet.AppletPanel.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)
Avatar billede krukken Mester
20. oktober 2004 - 20:46 #32
Ved du hvor man retter det?

(Vi kommer godt nok vidt omkring idag:-)
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:47 #33
Du skal ind i MySQL og give brugernavn@'%' adgang, da requests jo kan komme fra mange
forskellige adresser !
Avatar billede krukken Mester
20. oktober 2004 - 20:49 #34
Kan man så ikke bare give alle adgang istedet - altså selvfølgelig ikke at alle - men alle som skal se appletten?
Avatar billede krukken Mester
20. oktober 2004 - 20:51 #35
Jeg mener på en hjemmeside dur det jo ikke at man skal anføre alle ip i hele verden for at sikre at alle der skulle få lyst til at se ens appelt skal have adgang:-)
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:51 #36
Jo hvis du kender alle N adresser brugerne kan komme fra,
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:53 #37
Derfor jeg forelog:

brugernavn@'%'

% = wildcard = alle adresser
Avatar billede krukken Mester
20. oktober 2004 - 20:56 #38
Men det gør man jo som regle ikke? I dette tilfælde gør jeg.
Avatar billede krukken Mester
20. oktober 2004 - 20:56 #39
og hvad er brugernavn? I hvilken fil skal det tilføjes?
Avatar billede arne_v Ekspert
20. oktober 2004 - 20:58 #40
Brugernavn er det som du angiver i DriverManager.getConnection
Avatar billede krukken Mester
20. oktober 2004 - 22:53 #41
Jeg opretter et spørgsmål så jeg kan give dig nogle flere point. Ligger du så et svar?
Avatar billede arne_v Ekspert
20. oktober 2004 - 22:56 #42
ok
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