Импорт пользовательских классов в Java, работа с командной строкой - PullRequest
0 голосов
/ 18 октября 2019

Я написал несколько классов в одной папке, вот иерархия:

bookpirate/

-Window.java

-Navigator.java

-NavEventHandler.java

Все файлы имеют "пакетный книжный пират;" в начале

вот как я их импортировал:

Класс навигатора:

package bookpirate;

import javax.swing.*;
import java.awt.*;
import bookpirate.NavEventHandler;

public class Navigator
{
    private JPanel panel;

    public JTextField page;

    public JButton pageBack;
    public JButton addBefore;
    public JButton addAfter;
    public JButton pageForward;
    public JButton removePage;
    public JButton undo;

    public JTextField getPage() { return page; }

    public JButton getPageBack() { return pageBack; }
    public JButton getAddBefore() { return addBefore; }
    public JButton getAddAfter() { return addAfter; }
    public JButton getPageForward() { return pageForward; }
    public JButton getRemovePage() { return removePage; }
    public JButton getUndo() { return undo; }

    public int nOfPages;
    public int getNOfPages() { return nOfPages; }

    public static void main(String[] args)
    {
        new Navigator();
    }

    public Navigator()
    {
        setListeners();
        System.out.println("Created NavEventHandler");
    }

    private void setListeners()
    {
        NavEventHandler handler = new NavEventHandler(this);

        page.addActionListener(handler);

        pageBack.addActionListener(handler);
        addBefore.addActionListener(handler);
        addAfter.addActionListener(handler);
        pageForward.addActionListener(handler);
        removePage.addActionListener(handler);
        undo.addActionListener(handler);

    }
}

Класс NavEventHandler:

package bookpirate;

import java.awt.event.*;
import javax.swing.*;
import bookpirate.Navigator;

public class NavEventHandler implements ActionListener
{
    Navigator navigator;
    public NavEventHandler(Navigator nav)
    {
        navigator = nav;
        System.out.println("Created NavEventHandler");
    }

    public void actionPerformed(ActionEvent event)
    {
        String string = "actionPerformed";
        //if(event.getSource() instanceof Navigator)
        //{
            if(event.getSource() == navigator.getPageBack()) 
            { string = "pageBack";}
            /*else if(event.getSource() == Navigator.getAddBefore()) 
            { string = "addBefore";}
            else if(event.getSource() == Navigator.getAddAfter())
            { string = "addAfter";}
            else if(event.getSource() == Navigator.getPageForward()) 
            { string = "pageForward";}
            else if(event.getSource() == Navigator.getRemovePage()) 
            { string = "removePage";}
            else if(event.getSource() == Navigator.getUndo()) 
            { string = "undo";}
            else if(event.getSource() == Navigator.getPage()) 
            { string = "page " + event.getActionCommand();}*/
            string += " gotSource";
        //}
        System.out.println(string);
    }

    public static void main(String[] args)
    {

    }
}

Здесьэто то, что я получаю, когда я компилирую NavEnventHandler:

C:\Users\...\bookpirate>javac NavEventHandler.java
NavEventHandler.java:5: error: cannot find symbol
import bookpirate.Navigator;
                 ^
  symbol:   class Navigator
  location: package bookpirate
NavEventHandler.java:9: error: cannot find symbol
        Navigator navigator;
        ^

Все это, пока я могу скомпилировать их вместе без ошибок

C:\Users\Falangrater\Desktop\Files\Programming\bookpirate>javac NavEventHandler.java Navigator.java Window.java

C:\Users\Falangrater\Desktop\Files\Programming\bookpirate>

Но я не могу их запустить,вместе или по отдельности

C:\Users\Falangrater\Desktop\Files\Programming\bookpirate>java Window Navigator NavEventHandler
Error: Could not find or load main class Window

C:\Users\Falangrater\Desktop\Files\Programming\bookpirate>

Я пытался создать файл manifest.txt

Main-Class: Window


Я не могу добавить файл .mf в файл

Я пыталсябыть максимально кратким

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Это была проблема:

Я поместил классы в пакетную книгу. поэтому для запуска программы мне нужно было находиться в родительской папке bookpirate:

/Programming> java bookpirate/Window

или

/Programming> java bookpirate.Window

вместо:

/bookpirate> java Window
0 голосов
/ 18 октября 2019

Вам не нужно импортировать классы из одного пакета. Почему мне не нужно импортировать класс, который я только что создал, чтобы использовать его в моем основном классе? (Java)

У вас нет метода main ни в одном из ваших классов, поэтому вы не можете запустить его таким образом. Подробнее: Можем ли мы выполнить программу Java без метода main ()?

РЕДАКТИРОВАТЬ: вам просто нужно перейти в родительский каталог и вызвать его так:

java bookpirate.Navigator или java bookpirate/Navigator

...