站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于包的简单问题,解决了就给分

关于包的简单问题,解决了就给分

摘要: 关于包的简单问题,解决了就给分


两个文件,其中一个文件名字是TestClass.java,代码如下:
package TestPack;
public class TestClass
{
public void testFunc()
{
System.out.println(-#34;This is TestClass-#34;);
}
}
另一个文件名字是test.java:代码如下:
import TestPack.TestClass;
class testPackage
{
void packageCheck()
{
new TestClass().testFunc();
}
}
以上这种写法编译可以通过,
为什么把import语句换成import TestPack.*;之后编译就通不过了?


没有问题的 啊 步骤,异常贴出来


test.java:6:无法访问TestClass
错误的类文件:./TestClass.java
文件不能包含类:TestClass
请删除给文件或确保该文件位于正确的类路径子目录中。
new TestClass().testFunc();
^
1 错误


这个问题我也碰到过,没管它,顶多就是写详细点,甚至多写几条同一个包里的其它类.


更正一下:请删除给文件
应为:请删除该文件
上面的是用命令行编译的,
如果用jcreator编译,错误信息是:无法访问TestClass


to碧海情天:
那就是说,如果一个包里面的类很多的话,必须要一个一个写出来,好麻烦啊,最好是能找到这个问题的原因所在


testPackage 有包结构吗


本人刚开始学,不知道您所说的包结构吗是个啥东东,以上的代码是全部代码


EC 编译没有错吧 我拿EC试的


jcreator的问题,我也试过,用elicpse就可以。


我不用EC 直接用命令提示符都没有问题。。。
放弃JC 用EC吧
还请LZ忍痛割爱


那我用命令行怎么也是编译不过呢?郁闷


java中的包会对应到一个文件夹,楼主提出的两个文件应该是这样一个文件夹结构:(假设在C:根目录下)

C:/
|-- test.java (源文件)
|-- TestPack (文件夹)
|-- TestClass.java (源文件)

楼主问题的根源在于CLASSPATH的设置会影响javac的执行方式:

当你导入一个包中所有的类(import TestPack.*)时,javac在编译时并不确定你要使用的TestClass类是TestPack包中的类,还是其他包中的类,它会根据你机器上的CLASSPATH环境变量的值去查找类,通常我们在CLASSPATH中会设置一个点(.),表示当前目录,如果没有CLASSPATH环境变量,那么在JDK1.4之后,默认也是查找当前目录。javac在按照文件名(不包括后缀)来查找类,于是找到TestClass.java,而这个文件根本不是字节码文件,当然就报错了。当你导入一个具体的类时,javac在分析源文件时就知道了你程序中用的类是TestPack.TestClass,那么它就在CLASSPATH环境变量下查找TestPack目录下的TestClass类,正好有,于是正确执行。


楼主可以根据上面的分析 以及 下面的提示:

test.java:6:无法访问TestClass
错误的类文件:./TestClass.java
文件不能包含类:TestClass
请删除给文件或确保该文件位于正确的类路径子目录中。
new TestClass().testFunc();
^
1 错误
-------------------------
将./TestClass.java删除或者移动到其它的目录,程序又可以重新正确执行.


按照东成西就,芝兰境界说的试了一下,果然是这样:先编译TestClass.java,然后删掉,然后再编译test.java,通过。
结贴,给分


谢谢楼上各位兄弟

一开始学会了基本的命令行编译就行了,以后懂了再慢慢去弄这个环境的问题。


↑返回目录
前一篇: 这算不算jar命令的bug?
后一篇: 建立一个mypg目录 里面的方法怎么写?