Jestem dość zielony z javy, a pilnie potrzebuję to uruchomić, mógłby ktoś pomóc?
Mam 3 takie pliki:
Client.java:

package client;

import rmi.Calculator;
import gui.GUI;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStreamReader;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Client {

    private GUI gui;
    private Calculator stub;
    
    
    
    
    public Calculator getStub() {
        return stub;
    }
    
    public void connectServer() {
        try {
            Registry reg = LocateRegistry.getRegistry();
            Calculator stub = (Calculator) reg.lookup("Calculator");
            this.stub = stub;
        } catch(Exception e) {
            gui.getResultText().setDisabledTextColor(Color.red);
            gui.getResultText().setText("Brak połączenia z serwerem.");
        }
    }
    private static final long serialVersionUID = 1L;
	JTable table;
	JButton btnGen = new JButton("Utwórz");
	JButton btnLicz = new JButton("Oblicz");
	JTextField txt = new JTextField(5);
	float macierz[][];
        
	 
public class WyznacznikMacierzy extends JFrame implements ActionListener{ 
    
     
	private static final long serialVersionUID = 1L;
	JTable table;
	JButton btnGen = new JButton("Utwórz");
	JButton btnLicz = new JButton("Oblicz");
	JTextField txt = new JTextField(5);
	float macierz[][];
	
	 
	 public static void main(String[] args)
    {
        new Client();
    }
        
	public WyznacznikMacierzy()

	{
		this.setSize(350,350);
		this.setLayout(null);
		JLabel l = new JLabel("Wielkość macierzy"); 
		this.add(l);
		txt.setText("5");
		this.add(txt);
		this.add(btnGen);
		this.add(btnLicz);
		
		//podlaczenie listeneera do buttonow
		btnGen.addActionListener(this);
		btnLicz.addActionListener(this);
		
		l.setBounds(10, 20, 400, 24);
		btnGen.setBounds(100,50,95,18);
		btnLicz.setBounds(200,50,95,18);
		txt.setBounds(20,50,80,18);
                
                 setLocationRelativeTo(null);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setVisible(true);
	}
	
	public void inicjalizacjaMacierzy()
	{
		int rozmiarMacuerzy; 
		//gdy ilosc kolumn nie jest liczba to zakladamy 5
		try {
			rozmiarMacuerzy = Integer.valueOf(txt.getText());
		} catch (Exception e) {
			rozmiarMacuerzy = 5;
		}
		macierz = new float[rozmiarMacuerzy][rozmiarMacuerzy];
				
		if (table!=null) this.remove(table);
		DefaultTableModel model = new DefaultTableModel(rozmiarMacuerzy,rozmiarMacuerzy);
		table = new JTable(model);		
		table.setShowGrid(true);
		table.setBorder(BorderFactory.createLineBorder(Color.black));
		
		table.setBounds(new Rectangle(20,100,rozmiarMacuerzy*30,rozmiarMacuerzy*30));
			
		table.setRowHeight(30);
		
		TableColumn kolumny;
		for (int a=0;a<table.getColumnCount();a++)
		{
			kolumny = table.getColumnModel().getColumn(a);
			kolumny.setWidth(30);
		}
		this.add(table);
		
		this.repaint();
		
	}
	
	//obliczenie wyznacznika macierzy
	public float wyznacznikMacierzy(float[][] macierz, int wartość) {
		float bufor[][];
		float wynik = 0;
		if (wartość == 1) 
		{
			return macierz[0][0];
		} 
		else 
		{
			bufor = new float[wartość - 1][wartość - 1];
			for (int a = 0; a < wartość; a++) 
			{
				for (int b = 0; b < wartość - 1; b++) 
				{
					for (int k = 0; k < wartość - 1; k++) 
					{
						if (k<a)
						{
							bufor[b][k] = macierz[b + 1][k];
						}
						else
						{
							bufor[b][k] = macierz[b + 1][k+1];
						}							
					}
				}
				if (a % 2 == 0) //minory (znak) i obliczenie kolejnej macierzy
				{
					wynik += macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
				} 
				else 
				{
					wynik -= macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
				}
			}
			return wynik;
		}
	}

	

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource()==btnGen)
		{
			this.inicjalizacjaMacierzy();
		}
		if (e.getSource()==btnLicz)
		{
			for (int a=0;a<macierz.length;a++)
			{
				for (int b=0;b<macierz.length;b++)
				{
					//wartosci domyslne (gdy nie ma liczby to zero)
					float value =0;
					try {
						value = Float.valueOf(table.getValueAt(a, b).toString());
					} catch (Exception ex) {
						value = 0;
						table.setValueAt("0", a,b);
					}
					macierz[a][b] = value;
				}			
			}
			try {
				JOptionPane.showMessageDialog(this,"Wyznacznik macierzy jest równy: "+wyznacznikMacierzy(macierz,macierz.length),"Info",1);
                                
			} catch (Exception e2) 
			{
				JOptionPane.showMessageDialog(this,"Nie można obliczyć wyznacznika.","Błąd",1);
			}
		}
        }
}
}

Calculator.java

package rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Calculator extends Remote {
    public float wyznacznikMacierzy(float[][] macierz, int wartość) throws RemoteException;
  
}

i Server.java

package server;

import rmi.Calculator;
import gui.GUI;
import java.awt.event.ActionEvent;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import javax.swing.JOptionPane;

public abstract class Server implements Calculator {
    

    public float wyznacznikMacierzy(float[][] macierz, int wartość) throws RemoteException 
    {
     float bufor[][];
		float wynik = 0;
		if (wartość == 1) 
		{
			return macierz[0][0];
		} 
		else 
		{
			bufor = new float[wartość - 1][wartość - 1];
			for (int a = 0; a < wartość; a++) 
			{
				for (int b = 0; b < wartość - 1; b++) 
				{
					for (int k = 0; k < wartość - 1; k++) 
					{
						if (k<a)
						{
							bufor[b][k] = macierz[b + 1][k];
						}
						else
						{
							bufor[b][k] = macierz[b + 1][k+1];
						}							
					}
				}
				if (a % 2 == 0) //minory (znak) i obliczenie kolejnej macierzy
				{
					wynik += macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
				} 
				else 
				{
					wynik -= macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
				}
			}
			return wynik;
		}
	}

	

	
	public void actionPerformed(ActionEvent e) {
		if (e.getSource()==btnGen)
		{
			this.inicjalizacjaMacierzy();
		}
		if (e.getSource()==btnLicz)
		{
			for (int a=0;a<macierz.length;a++)
			{
				for (int b=0;b<macierz.length;b++)
				{
					wartosci domyslne (gdy nie ma liczby to zero)
					float value =0;
					try {
						value = Float.valueOf(table.getValueAt(a, b).toString());
					} catch (Exception ex) {
						value = 0;
						table.setValueAt("0", a,b);
					}
					macierz[a][b] = value;
				}			
			}
			
		}
	 
    }
    
    
}