三个程序分别如下:MainClass.java:package MyPackage;
public class MainClass
{
int i=10;
public MainClass()
{
System.out.println(i);
}
public static void main(String args[])
{
new MainClass();
}
}MainSubClass.java:package MyPackage;
public class MainSubClass extends MainClass
{
public static void main(String args[])
{
}
}
SamePackage.java:import MainPackage.*;//就是这里,编译通不过,写成import MyPackage.MainSubClass;就通过了,大家帮忙分析一下这是什么原因呀?
public class SamePackage
{
public static void main(String args[])
{
MainSubClass msc=new MainSubClass();
}
}错误信息:
\JAVA\SamePackage.java:6: 无法访问 MainSubClass
错误的类文件: E:\JAVA\MainSubClass.java
文件不包含类 MainSubClass
请删除该文件或确保该文件位于正确的类路径子目录中。
MainSubClass msc=new MainSubClass();
^
1 错误
我的环境变量:
classpath: .;C:\Program Files\Java\jdk1.5.0_06\lib
path: C:\Program Files\Java\jdk1.5.0_06\binMainClass.class 和 MainSubClass.class 都在 E:\JAVA\MainPackage中,如果我把MainClass.java和MainSubClass.java也放到E:\JAVA\MainPackage中,那么import MyPackage.*;就通过了,谁知道这是怎么回事吗?感激不尽!!!
public class MainClass
{
int i=10;
public MainClass()
{
System.out.println(i);
}
public static void main(String args[])
{
new MainClass();
}
}MainSubClass.java:package MyPackage;
public class MainSubClass extends MainClass
{
public static void main(String args[])
{
}
}
SamePackage.java:import MainPackage.*;//就是这里,编译通不过,写成import MyPackage.MainSubClass;就通过了,大家帮忙分析一下这是什么原因呀?
public class SamePackage
{
public static void main(String args[])
{
MainSubClass msc=new MainSubClass();
}
}错误信息:
\JAVA\SamePackage.java:6: 无法访问 MainSubClass
错误的类文件: E:\JAVA\MainSubClass.java
文件不包含类 MainSubClass
请删除该文件或确保该文件位于正确的类路径子目录中。
MainSubClass msc=new MainSubClass();
^
1 错误
我的环境变量:
classpath: .;C:\Program Files\Java\jdk1.5.0_06\lib
path: C:\Program Files\Java\jdk1.5.0_06\binMainClass.class 和 MainSubClass.class 都在 E:\JAVA\MainPackage中,如果我把MainClass.java和MainSubClass.java也放到E:\JAVA\MainPackage中,那么import MyPackage.*;就通过了,谁知道这是怎么回事吗?感激不尽!!!
补充一下,把这三个文件同两个.class文件都放到了MyPackage
三个程序分别如下:MainClass.java:package MainPackage;
public class MainClass
{
int i=10;
public MainClass()
{
System.out.println(i);
}
public static void main(String args[])
{
new MainClass();
}
}MainSubClass.java:package MainPackage;
public class MainSubClass extends MainClass
{
public static void main(String args[])
{
}
}
SamePackage.java:import MainPackage.*;//就是这里,编译通不过,写成import MainPackage.MainSubClass;就通过了,大家帮忙分析一下这是什么原因呀?
public class SamePackage
{
public static void main(String args[])
{
MainSubClass msc=new MainSubClass();
}
}错误信息:
\JAVA\SamePackage.java:6: 无法访问 MainSubClass
错误的类文件: E:\JAVA\MainSubClass.java
文件不包含类 MainSubClass
请删除该文件或确保该文件位于正确的类路径子目录中。
MainSubClass msc=new MainSubClass();
^
1 错误我的环境变量:
classpath: .;C:\Program Files\Java\jdk1.5.0_06\lib
path: C:\Program Files\Java\jdk1.5.0_06\binMainClass.class 和 MainSubClass.class 都在 E:\JAVA\MainPackage中,如果我把MainClass.java和MainSubClass.java也放到E:\JAVA\MainPackage中,那么import MyPackage.*;就通过了,谁知道这是怎么回事吗?感激不尽!!!
因为JAVA编译器考虑的特定位置作为包层次的根被CLASSPATH控制,在没有包参与的时候我们保存的所有类到同样未命名的缺省包中,这样做允许只要通过在命令行键入类名编译源文件和运行JAVA解释器,就可以得到结果.这是因为缺省的当前工作目录通常在CLASSPATH环境变量中为JAVA运行时间缺省定义.所以当楼主的SamePackage.java编译的时候,编译器在当前目录中搜索MainSubClass类,但是当前目录无法找到MainSubClass类文件,只找到MainSubClass.java源文件,所以会报错说错误的类文件.只要把同一目录下的源文件删除或在引入包中的具体的类就可以.只能所JAVA的规定比较死板吧.以上是我个人的理解,本人还是菜鸟,若有不对,请各位高手指正
-------------------------那为什么 jobs002(赏花赏月赏春光,The More you know,The More you forg) 没放到一个文件夹下,.*也找到了呢?
-------你这里的当前目录是不是就是指的源文件存放的文件夹?那要怎么看当前目录对不对呢?
-----------------------我也这样试过了,确实是能正常编译,可是我困惑的是为什么在有的人的机器上不用这样就能通过编译了呢???就比如jobs002(赏花赏月赏春光,The More you know,The More you forg)他也是在JCreator 3.00 pro下编译的,他既没把源文件放到包中,也没把当前目录下的.java文件删除,可是却通过编译了,你说怪不怪??? 我就不明白到底是什么问题???