2015-08-13 2 views
1

, когда я иду в каталог, который содержит класс .java, который, в свою очередь, содержит метод Main(), и запустить javac Application.java, я получаю эту ошибку: enter image description hereJava не может скомпилировать и запустить класс

А потом когда я бегу Java Application.java только чтобы увидеть выход, я получаю эту ошибку:

Error: Could not find or load main class Application.java 

по-видимому, даже и не признает класс там.

Это выход java -version:

java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b15) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

Это выход javac -version:

javac 1.8.0_45 

Не совсем уверен, что это неправильно.

Любые идеи?

+0

Если вы пытаетесь выполнить из командной строки, вы должны использовать 'Java Application'. Здесь не используется тип файла. - Снимок экрана с приведенным вами советом содержит правильную форму! – laune

+0

Начиная с приложения, использующего Spring, очень смело. Попробуйте использовать Hello-World и исходите из этого. – laune

+0

Кажется, что вы загружаете какой-то проект github и пытаетесь скомпилировать один класс через командную строку. Наилучший подход - импортировать его в среду IDE, потому что он использует библиотеки 3-й части. – leonardoborges

ответ

3

Причина, по которой не удается скомпилировать ваше приложение, заключается в том, что вы импортируете классы из других источников, но вы не сказали компилятору, где найти эти классы. Вам нужно добавить их в путь класса для компилятора. В этом случае вы импортируете некоторые классы из среды Spring, но вы не предоставили соответствующие файлы .jar компилятору, чтобы он знал, где искать классы, которые вы импортируете.

Вторая ошибка, возникающая при попытке запустить вашу программу, но вы не можете, потому что вам не удалось сгенерировать скомпилированную версию.

Я очень рекомендую вам загрузить Eclipse или IntelliJ IDEA или аналогичную IDE и использовать ее для вашей разработки и компиляции. Он будет обрабатывать почти все это для вас. У вас впереди неприятный путь, если вы хотите скомпилировать из командной строки.

+0

Согласовано. Для Java-пользователей популярная абстрактная среда IDE удаляет все (или большинство) сложности скрипта сборки. – scottb

+0

Причина, по которой я задал этот вопрос, состоит в том, что мне нужно написать сценарий bash для моего контейнера докеров, который запускает Java-приложение. – Kingamere

+0

Я использовал Eclipse в течение 2 лет и действительно не знал, как скомпилировать классы Java через командную строку из-за этого. – Kingamere

1

Ваше приложение использует некоторые сторонние библиотеки, такие как Spring. Вам нужно указать java, где можно найти эти библиотеки. Вы можете скопировать их где-нибудь и обратиться к ним с помощью конфигурации пути к классам. Чтобы упростить работу, загляните в систему управления зависимостями.

+2

* «Чтобы сделать вещи проще, загляните в maven ...» * ... это зависит от того, что вы подразумеваете под более простым. Для людей, которые знают Maven, его использование является естественным. Для тех, кому неизвестен Maven, он представляет собой, казалось бы, безграничный ландшафт обфускации и сложности. – scottb

+0

Гораздо проще использовать maven, чем разместить правильные банки в нужном месте и правильно настроить путь к классам. для новичков это проще. Вы просто копируете и вставляете некоторый xml, и он работает как магия. – ACV

+0

Я просто предполагаю, что вы в прежней категории. Иерархии Maven POM могут стать sooooo complex. Люди, которые живут с Maven каждый день, просто забывают, как неинтуитивно он может выглядеть. – scottb

1

Основываясь на том, что вы комментируете, вы можете поместить все банки третьей части в какую-то папку и запустить javac -cp "<folder_with_jars>" Application.java.

Если нет каких-либо ошибок компиляции будет генерировать файл класса, а затем вы можете выполнить с java Application

Смежные вопросы