奇怪的“找不到符号”错误(从终端编译包)

时间:2012-11-19 12:22:04

标签: java compiler-construction compiler-errors

首先: 我已经阅读了所有我在这里找到的cannot find symbol个主题。他们都没有解决我面临的问题。我不是一个专业的Java开发人员,我只是帮助这个课程的同事,所以请放轻松我。

让我先描述一下基本情况:

我有一个名为pdfDownload的软件包位于 src / pdfDownload 。在这个目录中,我有两个文件:PDFItem.javaPDFItemParser.java

两者都是公共课程。您可以在下面找到所附类的代码。我正在使用Eclipse IDE显示没有警告也没有错误**。

当我编译它们时,我收到以下错误消息:

 PDFItemParser.java:19: cannot find symbol symbol  : class PDFItem
 location: class pdfDownload.PDFItemParser  public static
 ArrayList<PDFItem> parseFile(String filePath){
            ^ PDFItemParser.java:11: cannot find symbol symbol  : class PDFItem location: class pdfDownload.PDFItemParser
    ArrayList<PDFItem> items = parseFile("data.csv");    
              ^ PDFItemParser.java:20: cannot find symbol symbol  : class PDFItem location: class pdfDownload.PDFItemParser         ArrayList<PDFItem>
 items = new ArrayList<PDFItem>();      /* Creates an ArrayList from type
 PDFItem which will contain all parsed ItemObjects */
                  ^ PDFItemParser.java:20: cannot find symbol symbol  : class PDFItem location: class pdfDownload.PDFItemParser
        ArrayList<PDFItem> items = new ArrayList<PDFItem>();        /* Creates an
 ArrayList from type PDFItem which will contain all parsed ItemObjects
 */
                  ^ PDFItemParser.java:21: cannot find symbol symbol  : class PDFItem location: class
pdfDownload.PDFItemParser       items.add(new PDFItem());
                      ^ 5 errors

类在正确的目录和包中都是公共 。对于PDFItem类中的PDFItemParser,我也会在Eclipse中自动完成。我和我的同事现在已经努力解决这个问题2个小时了。我很抱歉,如果这对你们来说真的很容易,但我们无法解决它,因为这个错误的通常情况并不适用。提前谢谢!

编辑:我在(Mac)终端中编译它们。我在终端中打开路径,然后输入:

 javac PDFItem.java

然后

 javac PDFItemParser.java

PDFItem - 类代码:

    package pdfDownload;

    public class PDFItem {

        String imageURL;
        String pdfURL;
        boolean imageLoaded;
        boolean pdfLoaded;
        String name;


        public PDFItem() {

        }

        public PDFItem(String name) {
            this.name = name;
        }

    }


PDFItemParser - Class Code:
---------------------------

    package pdfDownload;

    import java.util.ArrayList;
    import java.io.*;


    public class PDFItemParser {

        public static void main(){

        ArrayList<PDFItem> items = parseFile("data.csv");    

        if(items != null){
            System.out.println(items.get(0).name);
        }
    }


        public static ArrayList<PDFItem> parseFile(String filePath){
            ArrayList<PDFItem> items = new ArrayList<PDFItem>();            /* Creates an ArrayList from type PDFItem which will contain all parsed ItemObjects */
            items.add(new PDFItem());

            try{
                FileInputStream fstream = new FileInputStream(filePath);
                DataInputStream in = new DataInputStream(fstream);              /* Get the object of DataInputStream */

                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;
                while ((strLine = br.readLine()) != null)   {           /* Read File Line By Line  */

                  System.out.println (strLine);             /* Print the content on the console */

                }
                in.close();             /* Close the input stream */

            }
            catch (Exception e){            /* Catch exception if any */
                System.err.println("Error: " + e.getMessage());
            }

            return items;               /* Returns ArrayList */
        }

    }

2 个答案:

答案 0 :(得分:1)

您应该使用此命令编译您的类,以确保您的类进入为package创建的文件夹: -

javac -d . PDFItem.java
javac -d . PDFItemParser.java

如果在没有-d标志的情况下编译它,那么您的类不在package文件夹中,实际搜索它们。因此,PDFItemParser无法找到您的PDFItem课程。

另外,请确保您已在路径中添加路径直到package folder。仅添加路径,直到包含名称的文件夹,而不是类名。

答案 1 :(得分:1)

嘿,你没有合适的main功能。多数民众赞成:

我改变了这一行

public static void main(){

public static void main(String args[]){
PDFItemParser

中的

现在我可以运行该程序(但是当然它会给出运行时错误)

Error: data.csv (The system cannot find the file specified)null

修改

由于我没有data.csv文件,因此预计会出现此错误。

我能够在eclipse

中编译和运行这个程序而没有任何问题