2015-08-18 3 views
0

Я думаю, что мое понимание того, как настроить пакет Java, может быть что-то упущено, потому что я не могу получить свой пакет для компиляции. У меня есть 3 файла класса. Мой каталог выглядит так: ... Documents \ jsjf, который содержит: ArrayStack.java и StackADT.java. В каталоге jsjf у меня также есть папка «EmptyCollectionException», которая содержит EmptyCollectionException.java. Я могу скомпилировать EmptyCollectionException.java и StackADT.java, но когда я пытаюсь скомпилировать ArrayStack.java, я получаю следующие сообщения об ошибках (см. Ссылку): http://i.stack.imgur.com/koJ8P.jpgJava-пакет не будет компилироваться

Здесь находится верхняя часть каждой части моего кода для каждого файла. Кто-нибудь знает, в чем проблема. Почему ArrayStack не может импортировать пакет?

Для ArrayStack.java

package jsjf; 



import jsjf.EmptyCollectionException; 
import java.util.Arrays; 

public class ArrayStack<T> implements StackADT<T> 
{ 
    private final int DEFAULT_CAPACITY = 100; 
    private int top; 
    private T[] stack; 



    //----------------------------------------------------------------- 
    // Creates an empty stack using the specified capacity. 
    // Note top is now initialized at -1 so that when first 
    // element is added an top is decremented, top will equal 0 
    // corresponding to the array index of the first element. 
    //----------------------------------------------------------------- 
    public ArrayStack(int initialCapacity) 
    { 
     top = -1; 
     stack = (T[]) (new Object[initialCapacity]); 
    } 

    //----------------------------------------------------------------- 
    // Creates an empty stack using the default capacity. 
    //----------------------------------------------------------------- 
    public ArrayStack() 
    { 
     this(DEFAULT_CAPACITY); 
    } 


//Rest of code....... 

Для EmptyCollectionException.java:

package jsjf.exceptions; 


public class EmptyCollectionException extends RuntimeException 
{ 
    /** 
    * Sets up this exception with an appropriate message. 
    * @param collection the name of the collection 
    */ 
    public EmptyCollectionException(String collection) 
    { 
     super("The " + collection + " is empty."); 
    } 
} 

Для StackADT:

package jsjf; 


public interface StackADT<T> 
{ 
    /** 
    * Adds the specified element to the top of this stack. 
    * @param element element to be pushed onto the stack 
    */ 

    //Rest of Code 
+0

Пожалуйста, разместите текст, а не ссылки на изображения. –

ответ

1

Ваш код говорят, что вы ожидаете EmptyCollectionException быть в пакете jsjf , но вы говорите, что класс существует во вложенной папке, которая будьте глубже в иерархии пакетов (и соглашайтесь с соглашениями об именах Java, где имена пакетов обычно не имеют верблюжьего кода).

Ваш EmptyCollectionException код класса говорит, что в jsjf.exceptions пакете, то есть (а) она должна быть в папке exceptions в папке jsjf, и ваш импорт EmptyCollectionException должен быть import jsjf.exceptions. EmptyCollectionException.

Вы также должны находиться в разумном месте при компиляции, например, вашей папки с документами, так как пакеты будут жить «под», где вы компилируете. Лично я помещал это в более разумное расположение папки, желательно без пробелов, где-то не под папкой документов Windows.

1

Во-первых, имя пакета не должно начинаться с верхнего регистра. Это помогло бы вам увидеть, что jsjf.EmptyCollectionException не указывает на класс в вашей иерархии, а на пакет. Таким образом, после переименования пакета в соответствии с именования Java, правильный импорт должен быть:

import jsjf.emptyCollecionException.EmptyCollectionException 

В вас классе исключений, можно использовать другое имя пакета (exceptions). Имя пакета должно совпадать с именем родительского каталога. Поэтому я переименую каталог, содержащий EmptyCollectionException, на exception и исправьте импорт в ArrayStack.

Наконец, я настоятельно рекомендую вам работать с IDE, когда вы скомпилируете некоторые классы вручную, чтобы знать, как это работает. IDE поможет вам в импорте, компиляции и многом другом.

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