【问题标题】:Java says package doesn't exist. But it's in classpath [duplicate]Java 说包不存在。但它在类路径中[重复]
【发布时间】:2016-11-21 11:11:21
【问题描述】:

首先,Java 菜鸟。我正在尝试解码 JSON 字符串。我得到了包json-20160810.jar 并将其复制到C:\Program Files\Java\jre1.8.0_112\lib\ext 但java 说它不存在。我也尝试将 CLASSPATH 更改为相同的路径。我没有使用任何 IDE

我什至尝试将其复制到 \Java\jre1.8.0_91\lib\ext\Java\jdk1.8.0_112\bin

【问题讨论】:

  • 是编译时出错还是运行时出错?您如何运行任何失败的命令?
  • 是否有不使用 IDE 的具体原因?备注:类路径应该包括 JAR 文件,而不仅仅是它的目录。
  • 不要将自己的 JAR 放入扩展目录。这不是它的用途。
  • 如果您同时安装了 JRE 和 JDK,则必须注意使用哪一个。 javac 是 JDK 的一部分,因此使用 JDK 中嵌入的 JRE,\Java\jdk1.8.0_112\jre,所以它使用的扩展文件夹是 \Java\jdk1.8.0_112\jre\lib\ext。但请记住,当您运行应用程序时,它将使用您用于运行它的 JRE 的扩展文件夹,例如\Java\jre1.8.0_112\lib\ext\Java\jre1.8.0_91\lib\ext 或您另外安装的任何 JRE。这就是为什么扩展文件夹不是此类库的合适文件夹(它会在 Java 9 中消失)。

标签: java json java-8 package


【解决方案1】:

尝试以下命令:

javac -classpath ".;home/path/json-20160810.jar" yourJavaFile.java

【讨论】:

  • 我从未见过在类路径中使用引号。
  • 除非类路径(或其他参数)包含空格,否则不需要引号。 @HovercraftFullOfEels
  • 这行得通。谢谢 有没有办法让java默认使用某个目录中的包,而不是每次运行命令时都指定类路径?
  • @Lord Stiltskin:你可以设置一个环境变量CLASSPATH。只要没有给出明确的类路径,就会使用它。
猜你喜欢
  • 2015-03-13
  • 1970-01-01
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多