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
Скомпилируйте из /Users/tracking/Desktop/ реализация следующей командой
javac -cp . Postings.java
Класс Node.class должен находиться в подкаталоге, соответствующем пакету.