Что произойдет, если вы скомпилируете пустой файл Java? - PullRequest
7 голосов
/ 18 марта 2010

Когда я компилировал пустой файл Java, он не создавал никакого файла класса. Итак, я хочу знать, как компилятор реагирует при компиляции пустого файла Java? Я думал, что это должно сгенерировать пустой файл класса в этом случае, но это не так. Так почему же нет?

Ответы [ 9 ]

14 голосов
/ 18 марта 2010

javac начинается, видит, что в файле нет объявленного класса, и завершает работу. Чтобы создать файл .class, вы должны как минимум иметь объявление класса в файле.

6 голосов
/ 18 марта 2010

На самом деле большинство ответов говорят о том, что файл класса - это не скомпилированный java-файл, а двоичное представление класса.

Компиляция java-файла может привести к двум файлам классов, если java-файл содержит два класса (хотя только один может быть общедоступным), и поэтому компиляция чего-либо с нулевыми классами приведет к нулевым файлам классов.

2 голосов
/ 18 марта 2010

Хорошо, учитывая, что файл Java может быть таким:

// Foo.java 
class Bar
{
}

Откуда оно знает, как назвать вещь? Также должно ли это быть классом, интерфейсом или перечислением?

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

1 голос
/ 03 октября 2012

класс Emptyclass { }

// Emptyclass может быть успешно скомпилирован, и файл .class также сгенерирован, но во время выполнения происходит сбой, поскольку JVM не находит «Main Method» в классе «Emptyclass»

1 голос
/ 15 февраля 2011

Если бы вы объявили класс (например, public class test{ }), он скомпилировал бы и создал файл test.class. Он не запустится, потому что у него нет метода main.

1 голос
/ 18 марта 2010

Если файл полностью пустой и называется просто .java, компилятору нечего делать, когда вы пытаетесь сгенерировать файл класса. Если у вас есть

class Foo {
}

сегмент в файле .java, после чего будет создан пустой файл calss (Foo.class)

0 голосов
/ 09 августа 2016

Java не создаст файл класса этого файла Java. Потому что сначала он будет искать имя класса. Так что ничего не случится

0 голосов
/ 18 марта 2010

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

0 голосов
/ 18 марта 2010

Javac запускается и проверяет размер файла и, если он равен нулю, он просто возвращается без создания какого-либо файла .class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...