Компиляция Java-классов вместе - PullRequest
0 голосов
/ 06 апреля 2011

Я думал, что я это новое, но когда я создаю объект из класса в отдельном файле, он компилируется, только если этот класс определен в том же каталоге, или если я импортирую его из библиотеки. Я предполагал, что он использует classpath для поиска включенных файлов классов, но когда я добавляю случайный каталог в classpath (и размещаю там только этот файл), он все равно жалуется, что класс не определен и не будет компилироваться. Откуда он знает, чтобы искать классы во время компиляции?

Пример

public class SomeClass {

public SomeOtherClass SoC; // If this class is not in library or same directory -- won't compile.

}

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

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

Пример:

Класс com.whatever.SomeClass находится в src/java/com/whatever/SomeClass.class. Теперь путь к классу должен содержать src/java/, и оттуда ищется пакет com.whatever.

Если классы находятся в файле .jar, вы должны поместить jar в путь к классам. Внутри .jar у вас снова будет com/whatever/SomeClass.class (обратите внимание, что .jar - это в основном формат, похожий на zip).

0 голосов
/ 06 апреля 2011
// If this class is not in library or same directory -- won't compile

Верно.Ваши классы должны быть в classpath или в указанном вами .jar.

При компиляции вы будете использовать

javac -classpath .:/some/other:/another:/some/foo.jar

Затем вы import все, что вам нужно в вашем.Java-файлы (ваш код)

...