我有两节课:
我的应用程序
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 子文件夹的文件夹?还是直接指向类文件?或者包含类文件的文件夹(即使该类位于包中并且属于子文件夹中)?
我在 set 命令之后执行 echo %CLASSPATH% 并且类路径设置正确。我也做了一个ant build.xml文件,也遇到了同样的问题。事实上, ant -verbose 确认我的类路径设置正确。
首先:强烈建议不要使用 CLASSPATH 环境变量。最好的事情是让你忘记它的存在。使用-cp
命令行开关或类似的方法来设置类路径。
其次,每个类路径条目都代表类加载器开始寻找的位置.class
根据包层次结构,即它将查找类org.myCompany.Library
在子文件夹中org/myCompany
在任何类路径条目中。
因此,如果
- 您添加一个类路径条目
C:\java\project\
- 并且有一个类文件
C:\java\project\org\myCompany\Library.class
- 这实际上是一个包的一部分
org.myCompany
(这里大小写很重要!)
- 和你的
MyApplication
类有一个import org.myCompany.Library;
那么它真的应该有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)