#java #javac
#java #javac
Вопрос:
Итак, у меня было это.java-файл с именем ‘anagram.java «. После компиляции с помощью javac результирующий файл .class, который я получаю, называется ‘Anagram.class ‘ (с большой буквы А) Это может показаться несущественным, но до сих пор мне удавалось получить одно и то же имя как в коде, так и в скомпилированном файле. Кто-нибудь знает, почему это произошло? Вы можете увидеть изображение командной строки здесь
Комментарии:
1. ваш класс называется Anagram или anagram?
2. Как называется класс в
anagram.java
? Держу пари, что этоAnagram
(и нетanagram
). Таким образом, имя.class
файла являетсяAngram.class
, notanagram.class
, несмотря на то, что исходный файл являетсяanagram.java
, а неAnagram.java
. Другими словами, имя.class
файла происходит от имени класса, а не от имени исходного файла Java.3. .class file принимает имя класса, который содержит метод main, поэтому, если это так
class Anagram
, это будет Anagram.class4. Ах да, я понимаю. мой класс был назван Anagram. Это имеет больше смысла, но у меня сложилось впечатление, что основной класс должен иметь то же имя, что и исходный файл. Я удивлен, что код даже запустился. Большое спасибо за помощь 🙂
Ответ №1:
Обратите внимание, что javac не чувствителен к регистру для Windows, но не для Linux, например. Имя вашего класса в anagram.java файл написан с заглавной буквы, то есть это анаграмма класса (как и должно быть), поэтому javac использует эту версию с заглавной буквы для создания вашего файла класса. В общем, имена файлов java также следует указывать заглавными буквами, поскольку это соглашение, и в зависимости от операционной системы javac может не работать с расхождениями в прописных буквах.
Комментарии:
1. Никаких забот!
2. При каких обстоятельствах
javac
в именах файлов не учитывается регистр? В Linuxjavac
ожидается, что открытые классы будут определены в файлах с одинаковым именем, включая тот же регистр. Если этот ответ вообще правильный, я не думаю, что он правильный для Linux.3. @KevinBoone Вы правы; он не чувствителен к регистру для Windows, но не для Linux. Я по умолчанию отвечал на Windows. Я обновлю ответ. Надеюсь, теперь это удовлетворительно.
4. Достаточно справедливо. Интересно,
javac
это не чувствительно к регистру в имени файла или в самой Windows? Или, возможноjavac
, должно быть, потому что Windows есть?5. Я предполагаю, что это последнее, что javac должен быть нечувствительным к регистру, потому что сама Windows.