Как правильно создавать и импортировать пакеты в Java

Я использую Netbeans 8.1 и Java 8.

У меня есть программа Java с именем «MyFrame.java», и я хочу создать пакет с ее классами и методами - я называю этот пакет «myframe», и он находится в «\ Lab \ MyFrame \ src \ myframe». Смотрите рисунок: Как правильно создавать и импортировать пакеты в Java

(Игнорируйте красные линии - это фиктивная версия).

Файл класса создается после компиляции с помощью команды "javac MyFrame.java" в том же каталоге \ myframe. Теперь я хочу импортировать пакет «myframe» в новый файл Java «MoreButtons.java». Это будет выглядеть так, и для удобства я сохраняю его в \ src: Как правильно создавать и импортировать пакеты в Java

Компиляция и выполнение MoreButtons.java работает нормально. Пакет был импортирован. Но теперь MyFrame.java выполнить немного сложнее: наивный подход дает: Как правильно создавать и импортировать пакеты в Java

Перевод: Ошибка: не удалось найти или загрузить основной класс Кажется, это довольно распространенная проблема, и одно из решений - просто добавить каталог (\ myframe) в переменную среды PATH. Однако при этом по-прежнему возникала ошибка.

1) What am I doing wrong and how can I fix this?

2) What is the correct way to create and import custom-made packages in Java?

Частичный ответ на ваш первый вопрос. Что вы делаете не так, я не уверен, пока не увижу полный код. Но чтобы исправить это, можно попробовать кое-что. Поскольку вы используете netbeans, щелкните правой кнопкой мыши библиотеки в своем проекте, нажмите «Добавить проект» и добавьте проект, содержащий myFrame.java, в свой проект moreButtons.

user7896971 28.09.2018 18:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убедитесь, что терминал находится по пути Lab\MyFrame\src:

javac myframe\MyFrame.java MoreButtons.java
java -cp .; myframe.MyFrame

P.S. (/, : = linux / mac) или (\, ; = windows) output 1output 2

MyFrame.java

package myframe;

public class MyFrame extends javax.swing.JFrame{

    public MyFrame(String title){
        super(title);
        setSize(200,100);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }
}

MoreButtons.java

public class MoreButtons {
    public static void main(String[]args){
        new myframe.MyFrame("More Buttons");
    }
}

Хм, странно. Компиляция отлично работает как в cmd, так и в bash, но я могу запускать MyFrame только из cmd (используя java -cp .; myframe.MyFrame), но в bash команда java -cp .: myframe.MyFrame по-прежнему дает указанную выше ошибку.

Lozansky 28.09.2018 19:00

хотя вы используете bash, вы все еще находитесь на платформе Windows

user2575725 28.09.2018 22:27

Использование синтаксиса Windows в bash тоже не работает: /

Lozansky 29.09.2018 00:11
Я могу запустить MyFrame только из cmd, что это было?
user2575725 29.09.2018 01:14

Другие вопросы по теме