Я изучаю пакеты на java, но столкнулся с некоторыми ошибками.
у меня есть три java файла ...
Первый: ClassAA.java-
package Mypack;
public class ClassAA{
public ClassAA()
{
System.out.println("class A's constructor is called.");
}
public void testA()
{
System.out.println("class A's methos is called");
}
}
второй: ClassBB.java-
package Mypack;
public class ClassBB{
public ClassBB()
{
System.out.println("class B's constructor is called.");
}
public void testB()
{
System.out.println("class B's methos is called");
}
}
И третий - основной класс PackageDemo.java-
import Mypack.*;
class PackageDemo
{
public static void main(String args[])
{
ClassAA a1 = new ClassAA();
a1.testA();
ClassBB b1 = new ClassBB();
b1.testB();
}
}
теперь я хочу импортировать пакет Mypack, используя import Mypack. * в основном классе, но показывает ошибку -
PackageDemo.java:6: error: cannot access ClassAA
ClassAA a1 = new ClassAA();
^
bad source file: .\ClassAA.java
file does not contain class ClassAA
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
1 error
Я нашел два решения этой проблемы.
первый-
поместите файлы ClassAA.java и ClassBB.java в пакет Mypack. если я это сделаю, это будет работать, но я не думаю, что Java заставляет нас это делать (я не уверен).
Второй (я нашел это решение в stackoverflow) -
Переименуйте файлы ClassAA.java и ClassBB.java, потому что компилятор java путается с именем. (вот почему он выдает ошибку, плохой файл и т. д.) но если я переименую эти два файла, это покажет мне еще одну ошибку.
error: class ClassAA is public, should be declared in a file named ClassAA.java
public class ClassAA{
^
1 error
Итак, что мне делать, пожалуйста, помогите мне. я хочу импортировать пакет, используя import. *.
Итак, какие изменения я должен внести, чтобы эта программа не содержала ошибок. он работает с другим случаем, но проблема возникает, когда я импортирую пакет с помощью Mypack. *; программа работает с импортом Mypack.ClassAA;
Опять же, дерево пакетов должно соответствовать дереву каталогов. Итак, класс mypack.ClassAA должен находиться в файле mypack / ClassAA.java. И класс mypack.ClassBB должен быть в файле mypack / ClassBB.java




Как видите, ваше второе решение вовсе не решение. Дерево каталогов должно соответствовать дереву пакетов. Это так просто. Обратите внимание, что в соглашении об именах пакетов используются все строчные буквы. Значит, это должен быть
mypack, а неMypack.