Newsgroup: it.comp.java
Titolo: altrp problema con RMI (dov'e' UnicastRemoteObject)

Ho visto che ci sono alcuni thread su questo argomento. Putroppo pare
che il mio problema sia un po' diverso da quelli che ho visto.
In breve, il problema penso essere dato dal 
fatto che non riesco a capire dove e' (in quale jar, ammesso che
sia in un jar) la classe java.rmi.server.UnicastRemoteObject,
visto che ottengo il seguente errore:
$ rmic HelloImpl
java.lang.ClassNotFoundException: java.rmi.server.UnicastRemoteObject
not found in [file:./, core:/]
   <<No stacktrace available>>
penso che si debba specificare un classpath ma dove vado
a prendere quella classe (ammesso che il problema sia specificare
un classpath)?
Sotto maggiori dettagli, compreso il codice
*********** alcune premesse *****************
<premessa1>
non sono affatto esperto dei concetti "avanzati" di java (mentre
penso di conoscere la parte "base", se cosi' si puo' chimare). 
Per me rmi fa parte dei concetti avanzati (scusate l'ignoranza)
e rmi e' un argomento di cui sono in pratica totalmente ignorante
</premessa1>
<premessa2>
Al momento *devo* usare la seguente versione di java
$ java -version
java version "1.4.2_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_11-b06)
Java HotSpot(TM) Client VM (build 1.4.2_11-b06, mixed mode)
</premessa2>
<premessa 3>
Ho dato un'occhiata al tutorial della Sun ma mi pare di
capiere che fa riferimento a metodologie che vanno bene dalla
versione 1.5 in poi (ad esempio dice che non e' necessario usare
rmic) e io al momento non posso usarle (vedere
premessa 2) per cui ho deciso di chiedere qui
</premessa 3>
********************* il codice  ************
Allora ... io ho il seguente codice(in pratica e' un esempio che
mi sono scaricato da internet per cominciare a capire dove mettere
le mani quando si parla di rmi):
//interfaccia (Hello.java)
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote
{
  String sayHello() throws RemoteException;
}
// implementazione (HelloImpl.java)
// implementazione delloggetto remoto
//package hello;
import java.rmi.RemoteException;
import java.rmi.Naming;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RMISecurityManager;
public class HelloImpl extends UnicastRemoteObject implements Hello
{
  public HelloImpl()throws RemoteException
  {
    super();
  }
  public String sayHello()
  {
    return "Hello World";
  }
  public static void main(String args[])
  {
    if(System.getSecurityManager() == null)
    {
      System.setSecurityManager(new RMISecurityManager());
    }
    try
    {
      HelloImpl obj = new HelloImpl();
      Naming.rebind("//localhost/HelloServer",obj);
      System.out.println("Hello Server bound in registry");
    }
    catch(Exception e)
    {
      System.out.println("HelloImpl err: "+e.getMessage());
    }
  }
}
// il client (HelloClient.java)
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
public class HelloClient{
  public static void main(String args[])
  {
    String message="";
    Hello obj=null;
    if (System.getSecurityManager() == null)
    {
      System.setSecurityManager(new
      RMISecurityManager());
    }
    try
    {
      obj = (Hello)Naming.lookup("//localhost/HelloServer");
      message= obj.sayHello();
      System.out.println(message);
    }
    catch (Exception e)
    {
      System.err.println("Hello Server exception: " +
      e.getMessage());
      e.printStackTrace();
    }
  }
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Java HotSpot(TM) Client VM (build 1.4.2_11-b06, mixed mode)
Guardati questo..
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/getstart.doc.html
Luca
---
...don't dream it, be it.

 Luca
Grazie.
Comunque ho scoperto che il motivo principale per cui
non generava skeleton e stub era che sto usando cygwin che 
si porta dietro una versione di rmic che e' diversa da quella del j2sdk.
Ora devo risolvere tutti gli altri problemi.
Ciao,
Marco.
$ which rmic
/usr/bin/rmic
$ rmic -version
rmic (GNU libgcj) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
Copyright 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
$ /cygdrive/c/j2sdk1.4.2_11/bin/rmic
Usage: rmic <options> <class names>
where <options> includes:
  -keep          Do not delete intermediate generated source files
  -keepgenerated (same as "-keep")
  -v1.1          Create stubs/skeletons for 1.1 stub protocol version
  -vcompat       (default) Create stubs/skeletons compatible with both
                           1.1 and 1.2 stub protocol versions
  -v1.2          Create stubs for 1.2 stub protocol version only
  -iiop          Create stubs for IIOP. When present, <options> also
includes:
                   -always           Create stubs even when they appear
current
                   -alwaysgenerate   (same as "-always")
                   -nolocalstubs     Do not create stubs optimized for
same proces
  -idl           Create IDL. When present, <options> also includes:
                   -noValueMethods   Do not generate methods for
valuetypes
                   -always           Create IDL even when it appears
current
                   -alwaysgenerate   (same as "-always")
  -g             Generate debugging info
  -depend        Recompile out-of-date files recursively
  -nowarn        Generate no warnings
  -nowrite       Do not write compiled classes to the file system
  -verbose       Output messages about what the compiler is doing
  -classpath <path>      Specify where to find input class files
  -bootclasspath <path>  Override location of bootstrap class files
  -extdirs <path>        Override location of installed extensions
  -d <directory>         Specify where to place generated class files
  -J<runtime flag>       Pass argument to the java interpreter
