奇怪的"cannot find symbol"错误(从终端编译包)



首先: 我已经阅读了所有我可以在这里找到的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

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

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

javac PDFItem.java

然后

javac PDFItemParser.java

PDF项目-类别代码:

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 */
}
}

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

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

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

此外,请确保您已经在类路径中添加了直到package folder的路径。只将路径添加到具有包名称的文件夹,而不添加到类名。

嘿,你没有合适的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 中编译和运行这个程序而没有任何问题

最新更新