Вопрос по javac и package

236
05 ноября 2017, 16:20

У меня есть некий java файл, в нем прописан package - допустим package com.ya.tut.sprytalsy.

Вопрос: можете подсказать какой флаг указать в cmd (javac -флаг), чтобы он после компиляции не смотрел на package, т.е. я смог бы выполнить java filename.

Пробовал -sourcepath, не пошло(может не так пробовал). Пробовал -classpath - Но так понял что он дает ссылку на "исходник".

Answer 1

Чтобы скомпилировать 1 файл без указания пакета, вам надо в cmd перейти в папку, где и лежит этот java файл.

Вызвать javac fileName.java

Файл скомпилируется

Потом не выходя из папки вызвать java fileName

-classpath указывает компилятору на готовые class файлы, который используются в вашем проекте, они называются зависимостями и для простой и удобной работы с ними лучше использовать систему сборки.

Флаг -sourcepathиспользуется если у вас несколько классов в разных пакетах и все они используются классом, который вы хотите отправить на компиляцию.

Есть классы

src.com.java.A
src.com.util.B
src.com.util.V

A класс использует в своей работе B и V, значит для компиляции А надо компилировать все 3 класса

находясь в директории src/com/java можно вызвать команду

javac -sourcepath ../util A.java

лучше конечно компилировать из корня проекта, тогда команда немного поменяется ( находиться надо на уровне src)

javac -sourcepath com com/java/A.java

Чтобы ваши class файлы не валялись где попало, можно указать ключ -d ч указанием папки куда положить class фалы. Только надо сначала ручками создать папку для классов, назвать можно как угодно, я назову classes

javac -d classes -sourcepath com com/java/A.java
Answer 2

Вам просто нужно удалить package совсем и хранить все классы в одной папке, тогда можно будет собирать без всяких package (будет считаться, что у вас одни пустой package на весь проект), но это для мало-мальских больших проектов это не очень хорошое решение.

READ ALSO
Как работает DataInputStream.readUTF() с Socket

Как работает DataInputStream.readUTF() с Socket

readUTF() будет дожидаться сообщения от другого хоста, останавливая поток, или сразу же будет считывать? Если закрыть входной поток iStreamclose(): 1

306
Цикл while не работает в калькуляторе

Цикл while не работает в калькуляторе

Добрый день, пытаюсь написать консольный калькулятор и не пойму почему не работает циклВот код калькулятора, все работает

351
Android - Игра крестики нолики

Android - Игра крестики нолики

Как сделать, чтобы после того, как поставили крестик, то через некоторое время, вставился нолик, а не сразу?

324
Добавление кнопки на окно

Добавление кнопки на окно

Создаю окно с некоторой надписью и реакцией на нажатие клавиш(отображение нажатых символов на окне)Помогите пожулуйста создать кнопку на этом...

276