同一个包下的公开类编译时找不到。问题解决
2016-12-28 21:18
337 查看
学过java的人都知道,如果在同一个包下,一个类是可以直接引用同个包下的用public修饰的类。
但是有没有试过用doc命令行进去包目录结构下编译一个类时,这个类引用的同个包下的公开类编译时找不到(或许会报ClassNotFoundException),前提是被调用的公开类已经先被编译并通过了。
这里提供一个解决方法:
原因:其实这里出现的问题跟源文件没有任何关系,关键错在,你进去包目录下编译文件了,编译有包的源文件,应该在包的上一个目录去编译源文件,而且要带包结构。
举个例子:源文件目录结构是 src/carSystem/Car.java和src/carSystem/Rent.java,这两个文件的包是carSystem,而Rent.java有被Car.java引用的public类,所以,这时要先编译 javac carSystem/Rent.java,然后再 javac carSystem/Car.java
这里如果用eclipse或者myEclipse那肯定不会出现这个问题
最后在补充一下具体原因:你进入包目录下去javac Car.java的时候,因为这个java文件和Rent.java都是package carSystem的,所以他会在当前目录下去找carSystem目录下面的Rent这个类,然而,你的Rent.class是被编译到了当前CarSystem目录了,并不是当前目录的carSystem下。
也可以看看这个:
http://www.iteye.com/problems/34918
但是有没有试过用doc命令行进去包目录结构下编译一个类时,这个类引用的同个包下的公开类编译时找不到(或许会报ClassNotFoundException),前提是被调用的公开类已经先被编译并通过了。
这里提供一个解决方法:
原因:其实这里出现的问题跟源文件没有任何关系,关键错在,你进去包目录下编译文件了,编译有包的源文件,应该在包的上一个目录去编译源文件,而且要带包结构。
举个例子:源文件目录结构是 src/carSystem/Car.java和src/carSystem/Rent.java,这两个文件的包是carSystem,而Rent.java有被Car.java引用的public类,所以,这时要先编译 javac carSystem/Rent.java,然后再 javac carSystem/Car.java
这里如果用eclipse或者myEclipse那肯定不会出现这个问题
最后在补充一下具体原因:你进入包目录下去javac Car.java的时候,因为这个java文件和Rent.java都是package carSystem的,所以他会在当前目录下去找carSystem目录下面的Rent这个类,然而,你的Rent.class是被编译到了当前CarSystem目录了,并不是当前目录的carSystem下。
也可以看看这个:
http://www.iteye.com/problems/34918
相关文章推荐
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法 2010-9-16 15:01
- 一个VC6的工程转换为VS2008的工程后,编译找不到而且不能升级vc90.pdb文件的问题解决方法 2010-9-28 14:00
- 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
- 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
- VS2008编译DirectX SDK 2004 summer版的Sound例子程序出现的libcp.lib找不到的问题的解决办法
- VC6.0编译msdn例子时找不到mfc42ud.dll的问题之解决
- VC6.0编译msdn例子时找不到mfc42ud.dll的问题之解决
- 编译.NET项目提示“找不到系统命名空间,请添加系统组件的引用”问题的解决方法(该组件已被该项目正确引用)
- 在MSYS下用MingW GCC编译libgmp的一个小问题及解决方法
- 关于Qt编译时问题的一个非常奇怪的解决方法
- 合并Dev控件包为一个独立的包,解决带皮肤后编译文件过大问题
- Ubuntu 10.04下安装OpenCV及编译一个简单例程(找不到头文件的问题:error: cv.h: No such file or directory )
- 一个编译不能通过的问题的解决
- ubuntu 系统中codeblocks 设置问题——解决编译找不到编译器路径,运行时出现permission denied情况
- 有关用crosstool-ng编译交叉工具链出现找不到expat的问题的解决办法
- driverstudio生成的项目在编译过程的"ntstrsafe.h"找不到问题的解决
- 纯属巧合,解决了一个困扰许久的问题,关于网卡设置时提示“系统找不到指定文件”。
- 解决一个小问题-eclipse的不编译问题
- AIX上使用gcc和g++的一个编译问题的解决