2017-04-03 42 views
0

我想为我的类创建一个makefile,但看起来好像 makefile无法看到或找到我的类,尽管它们在相同的 文件夹中。Makefile找不到其他类(Java,Linux,Ubuntu)

它运行时,我运行javac但不是当我运行生成文件。

的Makefile

JAVAC=/usr/bin/javac 
dir=src/myrepo 

.SUFFIXES: .java .class 

.java.class: 

     $(JAVAC) -cp . $< 

default: $(dir)/*.class 

clean: 
     if [ -e $(dir)/*.java~ ] ; then rm $(dir)/*.java~; fi 
     mv $(dir)/*.class bin; fi 

目录是Assignment/MakefileAssignment/src/myrepo(在myrepo所有类)

类是PrintIt.javaBinarySearchTree.javaBinaryTree.javaRecord.java(所有myrepo)

错误:

/usr/bin/javac -cp . src/myrepo/BinarySearchTree.java 
src/myrepo/BinarySearchTree.java:3: error: cannot find symbol 
public class BinarySearchTree extends BinaryTree { 
            ^
    symbol: class BinaryTree 
src/myrepo/BinarySearchTree.java:9: error: cannot find symbol 
     public void insert (Record d){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:16: error: cannot find symbol 
     public void insert (Record d, BinaryTreeNode<Record> node){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:16: error: cannot find symbol 
     public void insert (Record d, BinaryTreeNode<Record> node){ 
            ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:16: error: cannot find symbol 
     public void insert (Record d, BinaryTreeNode<Record> node){ 
                ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:30: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d){ 
              ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:30: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d){ 
      ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:30: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:37: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d, BinaryTreeNode<Record> node){ 
              ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:37: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d, BinaryTreeNode<Record> node){ 
                ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:37: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d, BinaryTreeNode<Record> node){ 
                    ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:37: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d, BinaryTreeNode<Record> node){ 
      ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:37: error: cannot find symbol 
     public BinaryTreeNode<Record> find (Record d, BinaryTreeNode<Record> node){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:47: error: cannot find symbol 
     public void delete (Record d){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:51: error: cannot find symbol 
     public BinaryTreeNode<Record> delete (Record d, BinaryTreeNode<Record> node){ 
              ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:51: error: cannot find symbol 
     public BinaryTreeNode<Record> delete (Record d, BinaryTreeNode<Record> node){ 
                 ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:51: error: cannot find symbol 
     public BinaryTreeNode<Record> delete (Record d, BinaryTreeNode<Record> node){ 
                     ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:51: error: cannot find symbol 
     public BinaryTreeNode<Record> delete (Record d, BinaryTreeNode<Record> node){ 
      ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:51: error: cannot find symbol 
     public BinaryTreeNode<Record> delete (Record d, BinaryTreeNode<Record> node){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:70: error: cannot find symbol 
     public BinaryTreeNode<Record> findMin (BinaryTreeNode<Record> node){ 
               ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:70: error: cannot find symbol 
     public BinaryTreeNode<Record> findMin (BinaryTreeNode<Record> node){ 
                  ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:70: error: cannot find symbol 
     public BinaryTreeNode<Record> findMin (BinaryTreeNode<Record> node){ 
      ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:70: error: cannot find symbol 
     public BinaryTreeNode<Record> findMin (BinaryTreeNode<Record> node){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:77: error: cannot find symbol 
     public BinaryTreeNode<Record> removeMin (BinaryTreeNode<Record> node){ 
               ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:77: error: cannot find symbol 
     public BinaryTreeNode<Record> removeMin (BinaryTreeNode<Record> node){ 
                   ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:77: error: cannot find symbol 
     public BinaryTreeNode<Record> removeMin (BinaryTreeNode<Record> node){ 
      ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:77: error: cannot find symbol 
     public BinaryTreeNode<Record> removeMin (BinaryTreeNode<Record> node){ 
          ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:10: error: cannot find symbol 
      if (root == null) 
       ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:11: error: cannot find symbol 
       root = new BinaryTreeNode<Record> (d, null, null); 
       ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:11: error: cannot find symbol 
       root = new BinaryTreeNode<Record> (d, null, null); 
         ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:11: error: cannot find symbol 
       root = new BinaryTreeNode<Record> (d, null, null); 
             ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:13: error: cannot find symbol 
       insert (d, root); 
         ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:19: error: cannot find symbol 
        node.left = new BinaryTreeNode<Record> (d, null, null); 
            ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:19: error: cannot find symbol 
        node.left = new BinaryTreeNode<Record> (d, null, null); 
               ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:24: error: cannot find symbol 
         node.right = new BinaryTreeNode<Record> (d, null, null); 
             ^
    symbol: class BinaryTreeNode 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:24: error: cannot find symbol 
         node.right = new BinaryTreeNode<Record> (d, null, null); 
                 ^
    symbol: class Record 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:31: error: cannot find symbol 
      if (root == null) 
       ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:34: error: cannot find symbol 
       return find (d, root); 
           ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:48: error: cannot find symbol 
      root = delete (d, root); 
      ^
    symbol: variable root 
    location: class BinarySearchTree 
src/myrepo/BinarySearchTree.java:48: error: cannot find symbol 
      root = delete (d, root); 
          ^
    symbol: variable root 
    location: class BinarySearchTree 
40 errors 
Makefile:12: recipe for target 'src/myrepo/*.class' failed 
make: *** [src/myrepo/*.class] Error 1 
+0

尝试“dir =/src/myrepo”。好像你缺少正斜杠。 – Naidu

+0

看来classpath是错误的。你使用当前目录但不应该是“./src”?假设myrepo是一个包名。 – vanje

+0

您还应该考虑使用像Maven,Gradle或Ant这样的Java特定构建工具。 Make和Java不是最好的朋友。 – vanje

回答

0

找到了解决办法:

# Assignment 1 makefile 
# Hendri Vermeulen 
# 29 March 2017 

JAVAC=/usr/bin/javac 
dir=src/myrepo 

.SUFFIXES: .java .class 

.java.class: 
     $(JAVAC) -cp src/myrepo $< 

default: $(dir)/Record.class $(dir)/BinaryTree.class $(dir)/BinarySearchTree.cla 

clean: 
     if [ -e $(dir)/*.java~ ] ; then rm $(dir)/*.java~; fi 
     mv $(dir)/*.class bin; fi 

不得不添加 “-cp SRC/myrepo” 与编译命令,我的类路径的目录。