[Java] Fout bij connecten naar RMI server *

Pagina: 1
Acties:

  • Martijn18
  • Registratie: November 2000
  • Niet online
Hallo,
ben op de uni bezig om een connectie te maken tussen een RMI server en een client. De server hebben we runnen via JBuilder. Nu willen we via dos connecten naar de server maar daar wil die dus niet aan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
D:\TEST>java -Djava.security.policy=d:\test\rmi.pol RMIClient 130.115.53.188
Exception in thread "main" java.lang.NoClassDefFoundError: RMIClient (wrong
: refereetracking/RMIClient)
      at java.lang.ClassLoader.defineClass0(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.jav
1)
      at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
      at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)

Deze error krijgen we dan.. iemand die snel een fout ziet zitten?

WP: Daikin Altherma (EHVX11/ERLQ11) | PV: 20x 335 Wp (ZW) / 2x 335 Wp (ZO) | ACCU: 2x Marstek Venus 5,12kWh


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

hij kan de class RMI client niet vinden (verder heb ik nog geen verstand van RMI ;) )
maar stoei is wat met je classpath?

(copy&paste de string de JBuilder bij run gebruikt? )

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Heb je wel stubs gemaakt?

tip: doe het even met de hand dan weet je wat je doet. Je kan straks wel weer overstappen op JBuilder maar je moet eerst weten wat je doet..

ps: je connect ook niet in dos :) want die is 16 bit. Jij werkt gewoon vanuit een shell :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Topic titel verduidelijkt.

Misschien moet je even de RMI handleiding in de Java Tutorial doorlopen. Die is erg duidelijk. Werken met JBuilder is leuk, maar je weet soms niet al te goed wat je nu eigenlijk aan het doen bent....

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MisterData
  • Registratie: September 2001
  • Laatst online: 10:08
Hij kan gewoon de klasse RMIClient niet vinden, met andere woorden : je moet je classpath aanpassen met de parameter -cp of de systeemvariabele CLASSPATH :) Kijk of je wel alle nodige jars enzo in je classpath hebt staan :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op maandag 25 februari 2002 14:11 schreef MisterData het volgende:
Hij kan gewoon de klasse RMIClient niet vinden, met andere woorden : je moet je classpath aanpassen met de parameter -cp of de systeemvariabele CLASSPATH :) Kijk of je wel alle nodige jars enzo in je classpath hebt staan :)
Als hij de class helemaal niet gevonden had dan had je niet: 'RMIClient (wrong: refereetracking/RMIClient)' erbij gekregen. Ik denk echt dat hij niet bij de stubs kan komen.

Heb je wel rmic uitgevoerd?? (Dat maakt de stubs aan)

Verwijderd

Ik heb een zelfde soort probleem. Ik heb de RMI tutorial "Hello World" uit JBuilder 7 gemaakt precies zoals het beschreven is. Op t einde moet ik de server starten, dan krijg ik een popup verster dat zegt: "could not find the main class. program will exit" en in het status window krijg ik de melding:
--------------------
C:\Program Files\JBuilder7\jdk1.3.1\bin\javaw -classpath "C:\Documents and Settings\Benjamin\jbproject\Hello\classes;C:\Program Files\JBuilder7\jdk1.3.1\demo\jfc\Java2D\Java2Demo.jar;C:\Program Files\JBuilder7\jdk1.3.1\jre\lib\i18n.jar;C:\Program Files\JBuilder7\jdk1.3.1\jre\lib\jaws.jar;C:\Program Files\JBuilder7\jdk1.3.1\jre\lib\rt.jar;C:\Program Files\JBuilder7\jdk1.3.1\jre\lib\sunrsasign.jar;C:\Program Files\JBuilder7\jdk1.3.1\lib\dt.jar;C:\Program Files\JBuilder7\jdk1.3.1\lib\htmlconverter.jar;C:\Program Files\JBuilder7\jdk1.3.1\lib\tools.jar" -Djava.rmi.server.codebase=file:C:\Documents and Settings\Benjamin\jbproject\Hello\classes\-Djava.security.policy=file:C:\Documents and Settings\Benjamin\jbproject\Hello\rmi.policy hello.HelloImpl

java.lang.NoClassDefFoundError: and

Exception in thread "main"
---------------------

Ik gebruik WinXp en heb (nog) niks handmatig aangepast aan het classpath, ik heb het idee dat dat ook niet nodig is aangezien in die melding het complete classpath (goed) staat, maar ik snap dus niet waarom het niet werkt :|

[ Voor 4% gewijzigd door Verwijderd op 14-02-2003 17:28 ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Spaties in bestands/directory namen zijn nooit een strak plan en Java wordt er ook vaak niet blij van.

Het probleem is simpel:
code:
1
-Djava.rmi.server.codebase=file:C:\Documents and Settings\Benjamin\jbproject\Hello\classes\

Er zit een spatie in dit path, maar er staan geen quotes om. Oplossing: gebruik quotes of gebruik een locatie waarin geen spaties in het path zitten.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Je hebt gelijk, heb het tussen aanhalingstekens gezet en die error is nu weg, bedankt. Vanzelfsprekend het volgende probleem :) :

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)

Maar in mijn rmi.policy file staat wel
grant {
//Allow everything for now
permission java.net.SocketPermission "*:1024-65535", "accept, connect, listen";
};

Ik las ergens in een ander topic geloof ik dat het kan zijn dat die poort al gebruikt wordt ofzoiets..ik heb verder geen firewall ofzo.
Het ligt denk ik niet aan die poort want ik heb ff een haffel random poorten geprobeert maar dan doet ie het ook niet.
Dit is het stuk code waaruit de exception komt:

public static void main(String args[]) {

// Create and install a security manager
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
HelloImpl obj = new HelloImpl();
// Bind this object instance to the name "HelloServer"
Naming.rebind("//localhost/HelloServer", obj);

System.out.println("HelloServer bound in registry");
} catch (Exception e) {
System.out.println("HelloImpl err: " + e.getMessage());
e.printStackTrace();
}
}

Die try lukt dus niet maar waarom snap ik niet...

[ Voor 47% gewijzigd door Verwijderd op 14-02-2003 18:07 ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum, dat probleem zie ik zo ook niet. Volgens mij hebben we hier ook al erg vaak gezeur gezien met de JBuilder RMI samples ... Er is voor normaal draaien eigenlijk helemaal geen policy geneuzel nodig, dus dat is allemaal erg eenvoudig. Misschien moet je gewoon de Hello world uit de Java Tutorial pakken: RMI heeft tenslotte niets specifiek met jBuilder te maken.

http://java.sun.com/docs/books/tutorial/rmi/index.html

In de laatste post op de eerste pagina van Java RMI, clients inlichten na wijziging op server heb ik in het verleden eens een voorbeeld gemaakt van een RMI applicatie die nog wat leukers doet dan alleen een hello world ook ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Ja ik hoorde gister ook al van een vriend dat hij ook gezeik had met JBuilder en RMI :|
Hopelijk kom ik er nog wel uit want ik ga echt geen Visual Cafe meer gebruiken en notepad is me wat te moeilijk :)
Ik ben net begonnen met gedistribueerd programmeren dus dat voorbeeld van je ga ik zeker een keer namaken \o/

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Persoonlijk ben ik zeer gecharmeerd van een kwalitatieve editor (jext bijvoorbeeld) in combinatie met Ant. Met Ant kan je op een aardige wijze beschrijven hoe Java projecten gebuild moeten worden. Het is mateloos populair en wordt zo'n beetje door elk Java project gebruikt. Het is ook niet erg lastig te gebruiken en daarom kan je er eigenlijk al gelijk mee aan de slag.

Omdat het de build procedure beschrijft is het een ideale aanvulling op een 'schone' ontwikkelomgeving van een pure editor, sdk en een build tool. Je hebt dan dus helemaal geen JBuilder, Visual Cafe of Eclipse nodig, maar daar verschillen de meningen nogal over ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Om te kijken of je fout in de policy zit, probeer je het toch even met het geven van alle rechten. En aangezien het toch niet echt nodig is, zou ik dat toch maar doen om er zeker van te zijn dat het wel gaat werken.

In de policy file zet je het volgende neer:

grant {
// Allow everything for now
permission java.security.AllPermission;
};

Verwijderd

Het ligt niet aan die policy file denk ik. Ik heb even die aangepast met wat je hier zei, maar ik blijf deze message krijgen:
Exception occurred: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)

Verwijderd

Ik heb zo'n flauw vermoeden dat je de rmi-registry niet aan hebt gezet. Even voor de duidelijkheid het stapppenplan voor rmi bij jbuilder. Ik ben met versie 4 en 5 bekend. Ik weet dus niet of alles nog eender is voor versie 7.

* In je lijstje met bestanden binnen jbuilder (linker panel) klik je met je rechtermuisknop op het opstartbestand en kies je voor properties. Je gaat naar het tabblad build en kiest voor het tabblad rmi/jni. Hier zet je een kruisje voor de regel 'Generate RMI stub/skeleton'. Je klikt op OK.
* Je klikt nogmaals met je rechtermuisknop op het bestand en je kiest voor rebuild.
* In het Tools menu kies je voor RMIRegistry.
* Je kiest voor F5, Run of een andere manier om het project op te starten. Zorg er wel voor dat bij je project properties onder het tabblad Run op tabblad Application de volgende VM parameters zijn ingevuld:
-Djava.rmi.server.codebase=file:D:/project/classes/
-Djava.security.policy=D:/project/policy.dat

Achter de codebase moet een verwijzing staan naar het classpath van je bestanden. Onder jbuilder is dit standaard project/classes/. Let op vergeet niet de - voor Djava.

Sterkte ermee verder.

Nu moet alles gewoon werken

Verwijderd

Thx voor de replies en het meedenken. Die rmi-registry had ik wel gestart. Ik ben er nu achter waar het aan lag. Ik heb het complete project ff opnieuw gemaakt in c:\hello2
Dan doet ie het wel. Zeer waarschijnlijk lag het dus toch aan het feit dat ik spaties in de directorystructuur had staan (ook al zouden die toch eigenlijk gefixt moeten worden door aanhalingstekens te gebruiken MAJA java he...)
Anyway, KOEL! M'n eerste rmi ding werkt :+
Pagina: 1