首先:
我已经阅读了所有我可以在这里找到的cannot find symbol
线程。他们都没有解决我面临的问题。我不是专业的Java开发人员,我只是在帮助一位同事学习这些课程,所以请对我宽容一点。
让我先描述一下基本情况:
我有一个名为pdfDownload
的包,位于src/pdfDownload。在这个目录中,我有两个文件:PDFItem.java
和PDFItemParser.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 中编译和运行这个程序而没有任何问题