1

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

先说一下基本情况:

我有一个名为src/pdfDownloadpdfDownload的包。在这个目录中,我有 2 个文件:和.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

这些类都是公共的,在正确的目录和包中。我还在 Eclipse中获得PDFItem了类内部的自动完成功能PDFItemParser。我和我的同事一直在努力解决这个问题 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 */
        }

    }
4

2 回答 2

1

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

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

当您在没有-d标志的情况下编译它时,您的类不在package实际搜索它们的文件夹中。因此,您PDFItemParser无法找到您的PDFItem班级。

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

于 2012-11-19T12:29:33.677 回答
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 中毫无问题地编译和运行这个程序

于 2012-11-19T12:30:27.510 回答