我有两门课:
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/