- Ошибка компилятора Java: «общедоступный тип .. должен быть определен в собственном файле»?
- 5 ответы
- How to fix «the public type > must be defined in its own file» error in eclipse?
- Method 1: Check Class Name and File Name
- Method 2: Create a New Class File
- Method 3: Change Class Definition to Non-Public
- Method 4: Move Class Definition to its Own File
- «The public type must be defined in its own file»
- The public type conflicts must be defined in its own file
Ошибка компилятора Java: «общедоступный тип .. должен быть определен в собственном файле»?
Я никогда раньше не компилировал / не делал Java. Мне это нужно только для проверки результатов других моих программ. Любые идеи? Я компилирую на машине Linux.
4 — это не «каша» ошибок. 400 может быть, но не 4. И, пожалуйста, постарайтесь, чтобы вопросы были как можно более замкнутыми, мы не хотим гоняться по всему Интернету, искать ваш код, пытаясь помочь вам 🙂 — paxdiablo
Извините! Мне все еще нужно выяснить, как отформатировать на SO, спасибо за редактирование! — user427390
Для справки в будущем, 4 пробела перед строкой отформатируют ее как таковую, и вы можете использовать обратные кавычки, чтобы выполнить то же встроенное форматирование. Эта ссылка объясняет это довольно хорошо. — Reese Moore
5 ответы
import java.net.InetAddress; import java.net.UnknownHostException;
Если кто-то еще задается вопросом, файл необходимо переименовать, потому что имя файла должно совпадать с именем класса. Если я достаточно глуп, чтобы пропустить это и, следовательно, пропустить решение моей проблемы, возможно, кто-то другой тоже. — Старая школа
- Установите IDE по выбору (с Netbeans легко начать)
- Настройте свой код как новый проект
- Щелкните лампочку в строке, где возникает ошибка.
- Выберите нужное исправление
- Оцените мощь имеющихся у вас инструментов
@Jayan — Да, мы избалованы выбором, когда дело доходит до богатых IDE. У меня есть опыт работы только с Netbeans и Eclipse, и, хотя они оба фантастические, я думаю, что Netbeans будет иметь более поверхностную кривую обучения для тех, кто плохо знаком с языком. — ЗанавесСобака
+1 для Netbeans. Мне нравится IntelliJ, но коммерческий. Многие важные вещи отсутствуют в версии сообщества. — Адил Ансари
Я предполагаю, что OP будет Google «выберет java IDE», как только увидит этот ответ, поэтому обсуждение его в комментариях, вероятно, неуместно. — патексан
Переименуйте файл как DNSLookUp.java и импортировать соответствующие классы.
import java.net.InetAddress; import java.net.UnknownHostException; public class DNSLookUp < public static void main(String[] args) < InetAddress hostAddress; try < hostAddress = InetAddress.getByName(args[0]); System.out.println(hostAddress.getHostAddress()); >catch (UnknownHostException uhe) < System.err.println("Unknown host: " + args[0]); >> >
Вам необходимо импортировать классы, которые вы используете. например:
Чтобы импортировать все классы из пакета java.net.
Вы также не можете иметь общедоступный класс DNSLookUp в файле с именем dns.java. Похоже, пришло время для руководства по Java .
Таким образом, я отвечаю на этот «дубликат» здесь: в Eclipse вы можете подготовить все свои public class es в одном файле, тогда right-clic -> Refactor -> Move Type to New File . Это не совсем правильный обходной путь (это не позволит вам иметь несколько public class es в одном файле во время компиляции), но это позволит вам перемещать их в соответствующие файлы, когда вы будете готовы.
Исходя из C #, это раздражающее принудительное ограничение для классов, которые можно забыть (учебные), тем не менее, хорошая привычка.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками java compiler-errors or задайте свой вопрос.
How to fix «the public type > must be defined in its own file» error in eclipse?
The «The public type <> must be defined in its own file» error is a common issue faced by Java developers using the Eclipse IDE. It occurs when the class definition is not saved in its own separate Java file with the same name as the public class. Java requires that each class definition be saved in its own file, with the file name matching the class name exactly, including the case.
Method 1: Check Class Name and File Name
To fix the «The public type > must be defined in its own file» error in Eclipse using the «Check Class Name and File Name» method, you need to follow the steps below:
- Check if the class name matches the file name: The class name and the file name should be the same. For example, if your class name is «MyClass», the file name should be «MyClass.java».
// MyClass.java public class MyClass // class code here >
- Check if the class is public: If the class is public, it should be defined in its own file. If it’s not public, you can define it in another file with a different name.
// MyPackageClass.java class MyPackageClass // class code here >
- Check if the file is in the correct package: If your class is in a package, the file should be in the same package directory. For example, if your package name is «com.example», the file should be in the «com/example» directory.
// com/example/MyClass.java package com.example; public class MyClass // class code here >
- Check if the file is in the correct source folder: If your project has multiple source folders, make sure the file is in the correct source folder.
// src/com/example/MyClass.java package com.example; public class MyClass // class code here >
By following these steps, you can fix the «The public type > must be defined in its own file» error in Eclipse using the «Check Class Name and File Name» method.
Method 2: Create a New Class File
To fix the «The public type > must be defined in its own file» error in Eclipse, you can create a new class file for the public class. Here are the steps:
- In Eclipse, right-click on the package where the class is located and select «New» -> «Class».
- In the «New Java Class» dialog, enter the name of the public class in the «Name» field and select the «public» modifier.
- Click on the «Finish» button to create the new class file.
Here is an example code for a class named «MyClass»:
public class MyClass // class code here >
Note that if there are other non-public classes in the same file, you should move them to their own files as well.
Here is an example code for a class named «MyClass» and a non-public class named «Helper»:
public class MyClass // class code here > class Helper // helper class code here >
You should move the «Helper» class to its own file to fix the error.
Method 3: Change Class Definition to Non-Public
To fix the «The public type > must be defined in its own file» error in Eclipse, you can change the class definition to non-public. Here’s how to do it:
- Open the Java file that’s causing the error in Eclipse.
- Locate the class definition that’s marked as public.
- Change the access modifier from «public» to «protected», «private», or «default» (no modifier).
- Save the file.
Here’s an example code snippet that demonstrates how to change a public class to a protected class:
public class MyClass // This class is marked as public and causing the error // Class code here > protected class MyClass // Change the access modifier to protected // Class code here >
And here’s an example code snippet that demonstrates how to change a public class to a private class:
public class MyClass // This class is marked as public and causing the error // Class code here > private class MyClass // Change the access modifier to private // Class code here >
Remember, you can also change the access modifier to «default» (no modifier) if the class doesn’t need to be accessed outside of its package.
public class MyClass // This class is marked as public and causing the error // Class code here > class MyClass // Change the access modifier to default // Class code here >
That’s it! By changing the access modifier of the class definition, you can fix the «The public type > must be defined in its own file» error in Eclipse.
Method 4: Move Class Definition to its Own File
To fix the «The public type > must be defined in its own file» error in Eclipse, you can use the «Move Class Definition to its Own File» feature. Here are the steps to do it:
- Right-click on the class name that is causing the error and select «Refactor» from the context menu.
- In the «Refactor» menu, select «Move…».
- In the «Move» dialog, select the destination package for the class and click «OK».
- Eclipse will move the class to the new package and create a new file with the same name as the class.
- If there are any references to the class in other files, Eclipse will update them automatically.
Here is an example of how to use the «Move Class Definition to its Own File» feature:
// MyClass.java public class MyClass // class implementation > // Main.java public class Main public static void main(String[] args) MyClass myClass = new MyClass(); // use myClass object > >
In this example, the MyClass class is defined in the same file as the Main class, which causes the «The public type MyClass must be defined in its own file» error. To fix this error, you can use the «Move Class Definition to its Own File» feature:
- Right-click on the MyClass class name and select «Refactor» from the context menu.
- In the «Refactor» menu, select «Move…».
- In the «Move» dialog, select the destination package for the MyClass class (e.g. com.example ) and click «OK».
- Eclipse will move the MyClass class to the new package and create a new file called MyClass.java .
- The Main class will now reference the MyClass class from the new package:
// MyClass.java package com.example; public class MyClass // class implementation > // Main.java public class Main public static void main(String[] args) com.example.MyClass myClass = new com.example.MyClass(); // use myClass object > >
By using the «Move Class Definition to its Own File» feature, you can easily fix the «The public type > must be defined in its own file» error in Eclipse.
«The public type must be defined in its own file»
posted 9 years ago
(Warning: Java beginner issue ahead )
I have a small issue understanding the following error message that Eclipse returns when i try to run the following code:
The message itself reads: «Exception in thread «main» java.lang.Error: Unresolved compilation problem:
and the following on the line where the problem arises:
What gives? I’m positive i’m missing something obvious but i can figure it out why
Bartender
posted 9 years ago
- 1
Every public class/interface must be in a file named
Check if your file is named with this pattern.
And I recommend you learn java using some text editor (like Notepad++) and compiling using javac, and running using java.
IDEs do much work for you. As this is really good for working, it’s bad for learning.
The public type conflicts must be defined in its own file
posted 7 years ago
This was the error message that shows for Conflicts
i wanted to check out how both
java.util.Date and java.sql.Date can be used in a code
i had two ways of doing it as per my knowledge that being
java.util.Date date;
java.sql.Date sqlDate;
i get an error under conflicts stating «The public type conflicts must be defined in its own file».
Saloon Keeper
posted 7 years ago
Public types need to be declared in a source file of the same name. If your class is named «conflicts», the source file should be named «conflicts.java». Note that you should always start type names with a capital letter.
By the way, you shouldn’t use java.util.Date anymore. Instead, use java.time.LocalDateTime or java.time.Instant.
Bartender
posted 7 years ago
Stephan van Hulst wrote:
By the way, you shouldn’t use java.util.Date anymore. Instead, use java.time.LocalDateTime or java.time.Instant.
This is assuming you’re one of the lucky folks that gets to use Java 8. If you are stuck on an older version of Java, like some of us, look at the Joda time libraries. They were the source and inspiration for the improved Date classes in Java 8.
«The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do.» — Ted Nelson