2015-11-07 4 views
2

Так что я сделал это Java-файл A.java,Невозможно создать общественный класс в том же пакете

package alphabet; 


public class A{ 
    private String private_A; 
    String _A; 
    protected String protected_A; 
    public String public_A; 

    public A(){ 
     private_A="Private A"; 
     _A="Package Private A"; 
     protected_A="Protected A"; 
     public_A="Public A"; 
    } 
    public static void main(String[] args) { 

    } 
} 

и еще один класс в том же пакете,

package alphabet; 

import alphabet.A; 

public class B{ 
    void methodB1(){ 
    } 
    public static void main(String[] args) { 
     A AinB = new A(); 

    } 
} 

Когда я компилирую B I не может создать экземпляр A. Почему? A является общедоступным классом, а B принадлежит к той же упаковке? Не следует ли B сделать экземпляр A?

Это довольно noobish, но спасибо.

EDIT: Got эти ошибки,

*@*:~/rand$ javac B.java 
B.java:3: error: cannot find symbol 
import alphabet.A; 
      ^
    symbol: class A 
    location: package alphabet 
B.java:9: error: cannot find symbol 
       A AinB = new A(); 
       ^
    symbol: class A 
    location: class B 
B.java:9: error: cannot find symbol 
       A AinB = new A(); 
          ^
    symbol: class A 
    location: class B 
3 errors 

EDIT: Удалены оператор импорта по-прежнему получаю эти ошибки

B.java:9: error: cannot find symbol 
       A AinB = new A(); 
       ^
    symbol: class A 
    location: class B 
B.java:9: error: cannot find symbol 
       A AinB = new A(); 
          ^
    symbol: class A 
    location: class B 
2 errors 
+2

Вы получаете ошибку? Если да, то что он говорит? –

+0

_A = «Пакет Private A»; это верно? –

+0

Как вы узнали, что это не работает? Я не вижу никакого вывода из классов. –

ответ

4

Поскольку ваши классы в пакете алфавите, вы должны поместить их в подкаталоге алфавита, а затем запустить JAVAC из родительского каталога с помощью этой командной строки:

javac alphabet/B.java 
+0

Пятно на! Спасибо, я знал, что это было довольно просто. – abhipil

1

Удалите оператор импорта в классе B. Вы не делаете необходимо импортировать из одного пакета.

+0

Это имеет смысл, и это то, что я написал первоначально, но когда я получил ошибку 'can not find symbol', я ввел импорт. Убрали его сейчас и отправили ошибки без импорта. – abhipil

-1

У вас есть 2 основные методы, вы должны иметь только 1, который для запуска программы прочь, попытайтесь создать Объект в ВЕ или любой класс, который вы хотите запустить первый:

package alphabet; 


public class A{ 
private String private_A; 
String _A; 
protected String protected_A; 
public String public_A; 

public A(){ 
    private_A="Private A"; 
    _A="Package Private A"; 
    protected_A="Protected A"; 
    public_A="Public A"; 
    } 
    public static void main(String[] args) { 
    B bclass = new B(); 
    bclass.yourmethod(); 
    } 
} 
+1

. У вас может быть так много основных методов, как вам нравится, и они не вызывают этого поблема. – EJP

4

проблемы вы компилируете это неправильно. Поскольку вы используете пакет, при компиляции вам нужно быть вне пакета.

Таким образом, вместо javac B.java

Сделать папку/директорию с именем совпадает с именем пакета т.е. alphabet и перемещать Java файлы.

javac alphabet/B.java

Смежные вопросы