【问题标题】: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 “从技术上讲,我是从另一个答案中得到的。”这表明我关心你的问题并花一些时间给你解决它的漏洞图。但您似乎不欣赏这一点;)

标签: java


【解决方案1】:

仔细检查您的类路径。看起来你混合了分隔符 ;:

也不要将jar 包含在已编译的类(库本身)中。您在类路径中包含了无用的 java-docssources

../src/:
../lib/commons-lang3-3.4-javadoc.jar;
../lib/pdfbox-app-2.0.0-20150606.170503-1383-sources.jar

【讨论】:

    【解决方案2】:

    这是我的建议

    .jar扩展如何编译使用

    .jar 扩展可以根据您的环境和 IDE 以不同方式导入。

    这里是如何从控制台作为本机模式工作的。


    1. http://www.java2s.com/Code/Jar/c/Downloadcommonslang333jar.htm 下载 .jar.zip

    2. 在您的工作(项目)目录中创建一个文件夹,命名为libs

    3. 解压下载的文件并将commons-lang3-3.3.jar复制到你的工作目录libs

    4. 我还创建了一个仅用于测试的类,将其命名为 TheNewWork.java 并添加了 3 个导入。

    5. 现在从您的工作目录c:\projects 进行编译:

      javac -classpath "/Projects/libs/commons-lang3-3.3.jar;" TheNewWork.java

    6. 运行它:

      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,但以这种或其他方式执行它是个人喜好。在其他操作系统中也可以做一些类似的事情。

    最后一件事,如果您懒惰并且既不想编写完整的命令行也不想创建类路径,您可以使用完整的命令行创建一个批处理文件并以这种方式运行它;)

    一些参考资料:

    希望能解决你的问题

    解决之前

    解决后


    注意
    另外感谢@MarkPeters 在我之前的回答中通知了我:将应用程序依赖项直接添加到 JRE 库不是一个好方法,因为它使 JRE 只适合运行一个 Java 应用程序,而不是一个通用的运行时。此外,它会使 OP 想要执行的任何部署变得复杂。 lib/ext 用于扩展核心 Java API,如下所述:docs.oracle.com/javase/tutorial/ext/basics/install.html。不适用于正常的应用程序依赖项。

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 2023-03-23
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多