Как использовать команду javac и java в одном каталоге

Я хочу скомпилировать и выполнить эту программу с помощью команд "javac" и "java":

package mypackage;

public class Myclass {

    public static void main(String[] args){
        System.out.println("test");
    }
}

Проблема у меня есть: Когда я нахожусь в папке "mypackage" и использую в ней "javac", он создает файл "Myclass.class". Но когда я использую команду «java Myclass» (я все еще нахожусь в папке «mypackage»), у меня появляется это сообщение:

Error: Could not find or load main class Myclass
Caused by : java.lang.NoClassDefFoundError: mypackage/Myclass (wrong name: Myclass)

Решение, которое я нашел: Я не должен заходить в папку "mypackage" и выполнять "java Myclass", а переходить на одну папку вверх и выполнять "java mypackage.Myclass" (это работает). https://stackoverflow.com/a/7509317/10104743

Мой вопрос : Я вижу некоторых людей, которые могут запускать команды "javac Myclass.java" и "java Myclass" напрямую, без необходимости переходить на одну папку вверх, как это сделал я. Почему у меня не работает и что я могу сделать, чтобы это исправить?

Вы указали имя пакета для своего класса (mypackage), поэтому java ожидает найти Myclass в каталоге с именем mypackage.

MTCoster 08.02.2019 00:15

Вы должны быть в каталоге, который содержитmypackage, и вы должны выдать javac mypackage/Myclass.java и java mypackage.Myclass. То, что вы видели, работает, только если нет оператора package.

user207421 08.02.2019 00:41

Если вы не укажете пакет в своем исходном коде, вы можете использовать 'javac MyClass.java' для компиляции в каталоге, содержащем исходный код, и вы можете использовать 'java MyClass' для его выполнения в этом каталоге.

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

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

Похожие вопросы

Используйте приложение Spring Boot в качестве зависимости с gradle
Попытка загрузить файлы из корзины S3 с помощью Java SDK, исключение нулевого указателя на isStandardEndpoint
Является ли законной или плохой практикой перемещение служебных методов в абстрактный суперкласс?
Spring-jdbc-4.0.5.release: установить время ожидания подключения DriverManagerDataSource программно
Как реализовать безопасность типов в клиентском интерфейсе?
Apache POI: изменение текста изображения запуска
Мне нужно проверить каждое установленное приложение и проверить, разрешено ли ему использовать мобильное соединение для передачи данных
Можно ли добавлять новые пути или редактировать существующие из векторных рисунков с помощью java?
Шифрование/дешифрование строки с использованием аффинного шифра с использованием исходной таблицы 128 ASCII
Преобразование строк данных в Scala с большим количеством столбцов