ClassNotfoundException возникает при привязке к удаленному объекту из плагина Rhapsody - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть приложение Swing, которое взаимодействует с сервером через RMI. Отлично работает.

Я перевожу это приложение для работы в качестве плагина Rhapsody. все работает нормально, пока я не пришел к привязке к удаленному объекту на сервере. Затем вызывается ClassNotfoundException.

Я уже обеспечил, чтобы реестр вызывался с - Djava.rmi.server.useCodebaseOnly=false

Сервер вызывается, включая переключатель - Djava.rmi.server.codebase="file:/C:/Users/esb/eclipse-workspace/modelHarvester/bin/entryPoint/" и плагин Rhapsody (клиент) вызывается (через раздел JVM в файле rhapsody.ini) с использованием того же ключа.

Код, вызывающий проблемы в клиенте, - это оператор «lookup»

public class HarvesterConnection {

    private static Registry myRegistry = null;
    private static HarvesterInterface myHarvester = null;
    private static boolean needsConnecting = true;

    public static HarvesterInterface connect()
    {
        if (needsConnecting)
        {
            try 
            {
                myRegistry = LocateRegistry.getRegistry(null);
                myHarvester = (HarvesterInterface) myRegistry.lookup("Harvester");
                needsConnecting = false;
            } 
            catch (RemoteException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            catch (NotBoundException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return myHarvester;
    }
}

, и для полноты здесь часть серверной части

public static void main(String[] args) 
{       
    final Options toolOptions = new Options();      
    try
    {       
        ToolTrace.traceTheTool(TracePhase.Initialising, TraceGranularity.ALWAYS, "Harvester Server initialising");

        buildCommandLineOptionsProcessor(toolOptions);

        if (detectCryForHelp(args))
        {
            /*
             * Just display the help.
             * Do NO processing even if
             * source model argument is
             * present.
             */
            displayToolUsageHelp(toolOptions);
        }
        else
        {               
            try 
            {
                LocateRegistry.createRegistry(1099);
                ToolTrace.traceTheTool(TraceGranularity.INFO, "java RMI registry created");
            } 
            catch (RemoteException e1) 
            {
                // error means that registry already exists
                ToolTrace.traceTheTool(TraceGranularity.INFO, "java RMI already exists");
            }                                       
            try 
            {
                /*
                 * Main processing thread.
                 */
                ToolTrace.traceTheTool(TraceGranularity.ALWAYS, "Processing Started");                  
                readComandLineArguments(args, toolOptions);

                /*
                 * Instantiate the Server
                 */

                HarvesterInterface localServer = new HarvesterServer();
                myServer = (HarvesterServer)localServer;
                HarvesterInterface stubObject = (HarvesterInterface) UnicastRemoteObject.exportObject(localServer, 0);                  

                /*
                 * Bind the local Server to the name "Harvester" in the registry
                 */
                Registry localRegistry = LocateRegistry.getRegistry(1099);
                localRegistry.rebind("Harvester", stubObject);

                ToolTrace.traceTheTool(TraceGranularity.ALWAYS, "Harvester bound in registry");

            } 
            catch (ToolUsageException e ) 
            {
                ToolTrace.traceTheTool(e);
                exitCode = 1;
            } 
            catch (RemoteException e) 
            {
                ToolTrace.traceTheTool(TraceGranularity.ERROR, "Registry FAILURE", "Cannot locate registry");
                e.printStackTrace();
                exitCode = 1;
            } 
            catch (Exception e) {
                ToolTrace.traceTheTool(TraceGranularity.ERROR, "Tool FAILURE", "Other unhandled exception");
                e.printStackTrace();
                exitCode = 1;
            }
        }       
    } 
    catch (ToolUsageException e) 
    {
        ToolTrace.traceTheTool(e);
        exitCode = 1;
    }
}

Какие-нибудь яркие идеи по этому вопросу ?? Заранее спасибо

...