Я скомпилировал и запустил простой файл Java в IntelliJ. Он содержит основной метод и еще один небольшой статический метод. Он работает отлично каждый раз.
Однако, когда я пытаюсь запустить команду java в файле .class с терминала, я получаю следующее:
Ошибка: не удалось найти или загрузить основной класс [имя файла здесь]Что я делаю неправильно?
Проблема в том, что вы включаете суффикс .class в команде.
Есть несколько другие возможные объяснения, так как вы не указали конкретную команду, которую вы выполнили. Возможно, что вы используете команду откуда-то, кроме местоположения вашего файла .class, и не даете ему полного пути или что вы неправильно написали его имя и т. Д. Однако, включая ложный .class суффикс, который команда java не ожидает, является наиболее распространенной причиной этой проблемы.
Предположим, что класс, содержащий точку входа вашей программы (main() ) называется Foo, а его исходный код находился в файле в текущем каталоге с именем Foo.java, поэтому вы скомпилировали свою программу, запустив javac Foo.java. Поскольку Foo - это имя класса, это создает файл с именем Foo.class, содержащий скомпилированный байт-код Java для этого класса.
Чтобы запустить программу, вы должны запустить:
java Foo
Ваше описание заставляет это звучать, как будто вы используете java Foo.class. Это обычный камнем преткновения для пользователей, которые используют команду java для запуска файлов .class в первый раз (независимо от того, программируются они на Java или просто запускают файлы .class, предоставленные кем-то другим).
java Foo.class не будет работать; команда java интерпретирует свой аргумент как имя класса, содержащего точку входа, а не имя файла. Когда вы запустите java Foo, он знает, как искать файл с именем Foo.class.
Проблема в том, что вы включаете суффикс .class в команде.
Есть несколько другие возможные объяснения, так как вы не указали конкретную команду, которую вы выполнили. Возможно, что вы используете команду откуда-то, кроме местоположения вашего файла .class, и не даете ему полного пути или что вы неправильно написали его имя и т. Д. Однако, включая ложный .class суффикс, который команда java не ожидает, является наиболее распространенной причиной этой проблемы.
Предположим, что класс, содержащий точку входа вашей программы (main() ) называется Foo, а его исходный код находился в файле в текущем каталоге с именем Foo.java, поэтому вы скомпилировали свою программу, запустив javac Foo.java. Поскольку Foo - это имя класса, это создает файл с именем Foo.class, содержащий скомпилированный байт-код Java для этого класса.
Чтобы запустить программу, вы должны запустить:
java Foo
Ваше описание заставляет это звучать, как будто вы используете java Foo.class. Это обычный камнем преткновения для пользователей, которые используют команду java для запуска файлов .class в первый раз (независимо от того, программируются они на Java или просто запускают файлы .class, предоставленные кем-то другим).
java Foo.class не будет работать; команда java интерпретирует свой аргумент как имя класса, содержащего точку входа, а не имя файла. Когда вы запустите java Foo, он знает, как искать файл с именем Foo.class.
Проблема в том, что вы включаете суффикс .class в команде.
Есть несколько другие возможные объяснения, так как вы не указали конкретную команду, которую вы выполнили. Возможно, что вы используете команду откуда-то, кроме местоположения вашего файла .class, и не даете ему полного пути или что вы неправильно написали его имя и т. Д. Однако, включая ложный .class суффикс, который команда java не ожидает, является наиболее распространенной причиной этой проблемы.
Предположим, что класс, содержащий точку входа вашей программы (main() ) называется Foo, а его исходный код находился в файле в текущем каталоге с именем Foo.java, поэтому вы скомпилировали свою программу, запустив javac Foo.java. Поскольку Foo - это имя класса, это создает файл с именем Foo.class, содержащий скомпилированный байт-код Java для этого класса.
Чтобы запустить программу, вы должны запустить:
java Foo
Ваше описание заставляет это звучать, как будто вы используете java Foo.class. Это обычный камнем преткновения для пользователей, которые используют команду java для запуска файлов .class в первый раз (независимо от того, программируются они на Java или просто запускают файлы .class, предоставленные кем-то другим).
java Foo.class не будет работать; команда java интерпретирует свой аргумент как имя класса, содержащего точку входа, а не имя файла. Когда вы запустите java Foo, он знает, как искать файл с именем Foo.class.