将包添加到类路径时出现包不存在错误
Posted
技术标签:
【中文标题】将包添加到类路径时出现包不存在错误【英文标题】:Package does not exist error when package was added to classpath 【发布时间】:2016-01-27 06:57:26 【问题描述】:注意,链接的解决方案(例如Fatal Error: Unable to find package java.lang in classpath or bootclasspath)不起作用。
我收到此错误,但已导入包(commons....jar)
org.apache.commons.lang3.tuple //does not exist import
org.apache.commons.lang3.tuple.MutableTriple
源代码
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.lang3.tuple.Triple;
构建代码:
出口 JAVA_HOME=/库/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac -target 1.8 -source 1.8 -classpath \"../lib/commons-lang3-3.4.jar;../lib/httpclient-4.5.jar;../lib/httpcore-4.4.1.jar;../ lib/org.json-20120521.jar;../lib/pdfbox-app-2.0.0-20150606.170503-1383.jar;../src/:../lib/commons-lang3-3.4-javadoc.jar; ../lib/pdfbox-app-2.0.0-20150606.170503-1383-sources.jar" \ -d 输出 \ ../src/com/tymaf/pdf/*.java
如何解决这个问题?
【问题讨论】:
能否正确格式化您的问题?为什么 -classpath 和命令的其余部分之间有反斜杠?为什么在类路径周围有引号?您从哪个目录执行该命令,目录布局是什么? 您如何将外部库导入您的项目?你做了什么过程。你的问题很模糊,所以请说清楚。 格式化“构建代码”会很有帮助。这似乎是按顺序排列的多个命令,并且许多 `\` 可能是行连接符,可以在此处删除以提高可读性。 @user1122069 “从技术上讲,我是从另一个答案中得到的。”这表明我关心你的问题并花一些时间给你解决它的漏洞图。但您似乎不欣赏这一点;) 【参考方案1】:仔细检查您的类路径。看起来你混合了分隔符 ;
和 :
。
也不要将jar
包含在已编译的类(库本身)中。您在类路径中包含了无用的 java-docs
和 sources
。
../src/:
../lib/commons-lang3-3.4-javadoc.jar;
../lib/pdfbox-app-2.0.0-20150606.170503-1383-sources.jar
【讨论】:
【参考方案2】:这是我的建议
.jar
扩展如何编译使用
.jar
扩展可以根据您的环境和 IDE 以不同方式导入。
这里是如何从控制台作为本机模式工作的。
从 http://www.java2s.com/Code/Jar/c/Downloadcommonslang333jar.htm 下载 .jar.zip
库
在您的工作(项目)目录中创建一个文件夹,命名为libs
解压下载的文件并将commons-lang3-3.3.jar
复制到你的工作目录libs
我还创建了一个仅用于测试的类,将其命名为 TheNewWork.java
并添加了 3 个导入。
现在从您的工作目录c:\projects
进行编译:
javac -classpath "/Projects/libs/commons-lang3-3.3.jar;" TheNewWork.java
运行它:
java -classpath "/Projects/libs/commons-lang3-3.3.jar;" TheNewWork
如果您有多个.jar
,只需添加;
(适用于Windows)和:
(适用于Linux)。顺便说一句,我使用 Windows 10 cmder 控制台和 java jdk1.8.0_66。在其他操作系统控制台中,您可能需要使用.:Projects...etc
而不是/Projects...etc
。但想法是一样的。
更新 在windows中可以设置类路径
set CLASSPATH=%CLASSPATH%;C:\Projects\libs\commons-lang3-3.3.jar
Linux 中的或
export CLASSPATH=".:/Projects/libs/commons-lang3-3.3.jar"
然后您可以运行javac TheNewWork.java
,但以这种或其他方式执行它是个人喜好。在其他操作系统中也可以做一些类似的事情。
最后一件事,如果您懒惰并且既不想编写完整的命令行也不想创建类路径,您可以使用完整的命令行创建一个批处理文件并以这种方式运行它;)
一些参考资料:
http://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html https://www.chilkatsoft.com/java-classpath-Windows.asp希望能解决你的问题
解决之前
解决后
注意 另外感谢@MarkPeters 在我之前的回答中通知了我:将应用程序依赖项直接添加到 JRE 库不是一个好方法,因为它使 JRE 只适合运行一个 Java 应用程序,而不是一个通用的运行时。此外,它会使 OP 想要执行的任何部署变得复杂。 lib/ext 用于扩展核心 Java API,如下所述:docs.oracle.com/javase/tutorial/ext/basics/install.html。不适用于正常的应用程序依赖项。
【讨论】:
以上是关于将包添加到类路径时出现包不存在错误的主要内容,如果未能解决你的问题,请参考以下文章