2014-01-30 5 views
1

Я изучил пакет Java. К сожалению, я не понимаю, почему компиляция этих .java-файлов вызывает ошибку компиляции.Java: файлы классов упаковки

У меня есть следующие 3 Java файлы: Node.java, InvertedFile.java и Postings.java, все из которых находятся в каталоге /Users/tracking/Desktop/implementation/mytree на Mac OS X.

package  mytree; 
import  java.util.*; 

// Node.java 

public class Node 
{ 
    private int    label;   // unique integer identifier of this tree. 
    private Node   parent; 
    private List<Integer> leaves;   // the leaf value that this tree contains. 
    private List<Node>  children;  // internal nodes. 


    public Node(int uniqueID)  
    { 
     this.parent  = null; 
     this.label  = uniqueID; 
     this.children = new ArrayList<Node>(); 
     this.leaves  = new ArrayList<Integer>(); 
    } 

    public void add_leafnode(int data) 
    { 
     leaves.add(data); 
    } 

    public void add_internalnode(Node ChildNode) 
    { 
     children.add(ChildNode); 
    } 

    // print all leaves, print all children node identifier methods. 

    public void print_all_leaves() 
    { 
     Iterator iter = leaves.iterator(); 
     while(iter.hasNext()) 
     { 
      Integer element = (Integer)iter.next(); 
      System.out.println(element); 
     } 
    } 

    public List<Node> Get_children() 
    { 
     return children; 
    } 

} 

package  mytree; 
import  java.util.*; 

// Postings.java 

class Postings 
{ 
    private  int    parentID; 
    private  List<Node>  siblings;  // internal nodes. 

    public Postings(int parentID, List<Node> siblings) 
    { 
     this.parentID = parentID; 
     this.siblings = siblings; 
    } 

    public void print() 
    { 
     System.out.println(parentID); 

     Iterator iter = siblings.iterator(); 

     while(iter.hasNext()) 
     { 
      Integer element = (Integer)iter.next(); 
      System.out.println(element); 
     } 
    } 
} 

package  mytree; 
import  java.util.*; 

// InvertedFile.java 

class InvertedFile 
{ 
    private HashMap IF; 

    public InvertedFile() 
    { 
     IF = new HashMap(); 
    } 

    public void Add_Posting(int InvertedList, Postings posting) 
    { 
     IF.put(InvertedList, posting); 
    } 

} 

Проблема в том, что java-компилятор не знает, где Node.java, который на самом деле находится в ~/Desktop/implementation/mytree, есть. Ошибки компиляции, которые он мне сообщает, не дают никакой помощи.

Tracking:mytree tracking$ pwd 
/Users/tracking/Desktop/implementation/mytree 
Tracking:mytree tracking$ javac Node.java 
Tracking:mytree tracking$ javac Postings.java 
Postings.java:7: cannot find symbol 
symbol : class Node 
location: class mytree.Postings 
    private  List<Node>  siblings;  // internal nodes. 
        ^
Postings.java:9: cannot find symbol 
symbol : class Node 
location: class mytree.Postings 
    public Postings(int parentID, List<Node> siblings) 
            ^
2 errors 

Кроме того, я стараюсь использовать javac -d . Postings.java. Я всегда получаю ту же ошибку. Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо.

ответ

2

Java рассчитывает найти исходный файл в каталоге с именем mytree. Компиляция источник с пути /Users/tracking/Desktop/implementation

javac mytree/*.java 
+0

javac mytree/Node.java ?? – Bex

+2

Может быть, скомпилировать весь пакет? 'javac mytree/*. Java' –

0

Compile из/Users/отслеживания/Desktop/реализации с помощью следующей команды

javac -cp . Postings.java 

Node.class должен находиться в подкаталоге, который соответствует пакет.

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