首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Classpath问题

Java Classpath问题
EN

Stack Overflow用户
提问于 2010-09-10 14:12:51
回答 6查看 3.3K关注 0票数 0

我有两门课:

MyApplication

图书馆

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

代码语言:javascript
复制
set CLASSPATH=C:\java\project\org\myCompany\Library.class;.

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

代码语言:javascript
复制
MyApplication.java:33: cannot find symbol
symbol: class Library
location: class MyApplication
          Library theLibrary = new Library();

所以我把我的类路径改为:

代码语言:javascript
复制
set CLASSPATH=C:\java\project\;.

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

如何将Windows设置为包含Library.class文件?它应该指向包含org\myCompany子文件夹的文件夹吗?还是直接指向类文件?还是包含类文件的文件夹(即使类在包中并属于子文件夹)?

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-10 14:16:42

您不能像这样在类路径中添加一个类。你有三个解决方案:

将这个类添加到其他编译类的路径中(关于directories)

  • add的包命名,即类路径中该类的根目录(在您的例子中是"C:\java\project\")

  • add,这个单独的类添加到jar中,并将这个jar添加到类路径

中)。

对于您的问题,省吃俭用:外部依赖通常被打包到jar文件中。

票数 0
EN

Stack Overflow用户

发布于 2010-09-10 14:27:04

首先,非常不鼓励使用CLASSPATH环境变量。最好的办法就是让你忘记它的存在。使用-cp命令行开关或类似方法设置类路径。

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

因此,如果

添加类路径条目C:\java\project\

  • and的类文件C:\java\project\org\myCompany\Library.class

  • which实际上是包org.myCompany (大写问题!)

  • 的一部分,而MyApplication类有一个import org.myCompany.Library;

那它真的应该起作用。

票数 2
EN

Stack Overflow用户

发布于 2010-09-10 14:16:48

如果您的.class文件不在jar文件中,请将类路径指向类包所在的父dir,例如,对于类org.myCompany.Library,将CP指向包含org/myCompany的目录。

如果您的.class文件包含在某些jar文件中,请将该jar的完整路径添加到类路径中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3685260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档