问题 Java导入的包不存在


我正在尝试使用pdfbox编写一个简单的pdf文件,但问题是我收到错误:

cannot find symbol class PDDocument

我已将jar文件下载到程序所在的同一文件夹中。如何解决这个编译错误?

package org.apache.pdfbox.pdmodel.PDDocument;

import java.io.*;
import org.apache.pdfbox.pdmodel.PDDocument;

public class pdf
{
public static void main(String args[])
{
}
}

5339
2018-05-12 05:53


起源

来自javac的编译错误是在命令行上运行还是从IDE运行?将jar放在同一目录中是不够的 - 您需要将它添加到您正在使用的工具的类路径中。 - Greg Kopff
package org.apache.pdfbox.pdmodel.PDDocument;  您的包不应该是现有类的完全限定名称! - Andrew Thompson
谢谢安德鲁。我现在将其删除。 - user1952529


答案:


将jar放在同一个文件夹或包中不会将它添加到类路径中。在运行java程序时,需要在类路径中提到jar的路径。这是以下语法:

编译:

javac -classpath .;yourjar.jar src/your/package/*.java

跑步

java -classpath .;yourjar.jar src/your/package/yourprogrammeclassname

8
2018-05-12 05:56



这不会解决编译错误。 - Stephen C
对于编译,您可以设置CLASSPATH环境变量。 - Juned Ahsan
您的代码使用的任何类都是您自己编写的,需要将它们的位置指向编译器,以便在将所有内容编译在一起时将它们链接到您的代码中。这些类的文件系统路径称为类路径。有两种方法可以告诉编译器在哪里查找外部类。一种是在调用编译器时传递“-classpath”标志,并使用以分号分隔的路径列表来跟踪它,其中找到了类。 - Juned Ahsan
谢谢你的回复..我试试这个.. - user1952529
我刚刚安装了eclipse。我已经安装了eclipse并添加了jar文件,但是我收到了这个错误:声明的包“org.apache.pdfbox.examples.pdmodel”与预期的包“”pdf.java / Test / src第1行不匹配Java问题是我的import语句和包“package org.apache.pdfbox.examples.pdmodel; import java.io. *; import org.apache.pdfbox.exceptions.COSVisitorException; import org.apache.pdfbox.pdmodel.PDDocument; import org。 apache.pdfbox.pdmodel.PDPage;有什么问题吗? - user1952529


您需要确保JAR文件位于类路径中。


2
2018-05-12 05:55



感谢您的回复。为了确保,我使用了很好的示例,我使用了apache网站上的CreateBlankPDF.java。为了编译,我做了这个,javac -cp pdfbox-1.8.1.jar CreateBlankPDF.java并运行程序,我这样做:java -classpath pdfbox-1.8.1.jar CreateBlankPDF线程“main”java.lang中的异常.NoClassDefFoundError:CreateBlankPDF引起:java.lang.ClassNotFoundException:CreateBlankPDF - user1952529


有一个类似的问题,我发现我在java源代码中的导入行上没有正确的语法

按以下方式进行编译(在Windows上):

javac -cp .;commons-io-2.4.jar AgeFileFilterTest.java

与commons-io-2.4.jar在AgeFileFilterTest.java所在的文件夹中

我收到了错误:

import org.apache.*;
^
AgeFileFilterTest.java:24: error: cannot find symbol
            displayFiles(directory, new AgeFileFilter(cutoffDate));
                                        ^

这令人费解,因为似乎一切都已到位; jar在文件夹中,在类路径中定义,在jar内容检查时,我可以看到被引用的内容 - 使用7zip我打开了jar文件,可以看到:

commons-io-2.4.jar\org\apache\commons\io\filefilter\AbstractFileFilter.class

然后我读了一些帖子 “你不导入这个课” 这让我想到了导入语法......

我改变了:

import org.apache.*;

将其更改为:

import org.apache.commons.io.filefilter.*;

和wala编译错误使用:   javac -cp。; commons-io-2.4.jar AgeFileFilterTest.java

和程序使用

java -cp .;commons-io-2.4.jar AgeFileFilterTest

2
2017-08-14 02:27