Java 类路径问题

标签 java windows classpath

我有两门课:

MyApplication
Library

该库已编译为 Library.class,源代码不再可用。我现在正在尝试从源代码编译 MyApplication。 MyApplication 依赖于库。该库的包名称为 org.myCompany。我尝试将类路径设置为以下内容:

set CLASSPATH=C:\java\project\org\myCompany\Library.class;.

产生以下 javac 编译器错误消息:

MyApplication.java:33: cannot find symbol
symbol: class Library
location: class MyApplication
          Library theLibrary = new Library();

所以我将类路径更改为:

set CLASSPATH=C:\java\project\;.

产生了完全相同的错误消息。

如何设置 Windows 类路径以包含 Library.class 文件?它是否应该指向包含 org\myCompany 子文件夹的文件夹?还是直接指向类文件?或者包含类文件的文件夹(即使该类位于包中并且属于子文件夹中)?

我在设置命令后执行了 echo %CLASSPATH% 并且类路径设置正确。我也做了一个ant build.xml文件,也遇到了同样的问题。事实上,ant -verbose 确认我的类路径设置正确。

最佳答案

首先:强烈建议不要使用 CLASSPATH 环境变量。最好的事情是让你忘记它的存在。使用 -cp 命令行开关或类似方法来设置类路径。

其次,每个类路径条目都代表类加载器根据包层次结构开始查找 .class 的位置,即它将在任何类路径条目的子文件夹 org/myCompany 中查找类 org.myCompany.Library

因此,如果

  • 您添加一个类路径条目C:\java\project\
  • 并且有一个类文件C:\java\project\org\myCompany\Library.class
  • 它实际上是 org.myCompany 包的一部分(这里大小写很重要!)
  • 并且您的 MyApplication 类有一个 import org.myCompany.Library;

那么它确实应该有效。

关于Java 类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53492233/

相关文章:

c++ - Windows - 使用可视化库 FMXMain 获取参数

windows - 如何在 powershell 中获取/设置屏幕上的当前窗口位置?

java - ubuntu 中 webdriver.jar 的类路径

java - 在类路径中包含 Qclass

java - EntityManager 内存消耗

java - 了解 SQL 中的表约束

c++ - 使用 Visual Studio 调试器与不使用调试器运行可执行文件之间的差异

java - 如何在没有管理访问权限的情况下将证书添加到 Cacerts 文件?

java - Android 中未找到 WirelessOnlinePath、未找到 BatteryVoltagePath 和 BatteryTemperaturePath 错误

java - java中使用正则表达式的isPrime方法如何工作