java中import*导入包报错;
//class T ,所在目录为F:\javaWorkPlace
package a.b.c;
public class T{
public T(){
System.out.println("T");
}
}
//class Test,所在目录为F:\javaWorkPlace
import a.b.c.*;
public class Test{
public static void main(String arg[]){
T t = new T();
}
}
此时Test.java无法通过编译
将import a.b.c*改为import a.b.c.T编译就通过,且结果如下:
最终文件目录结构如图:
还有,如果在T.java编译完成后,在此根目录下将T.java删除,则import a.b.c*又能编译通过 展开
注:java文件编译后产生class文件,如果删除T.java 而没有删除T.class文件,则可以通过import
你第一次编译所有文件时没有通过的原因可能是:先编译了Text.java,这时没有T.class文件所以报错。
第二次编译通过原因:T.class文件存在所以能编译import
请看我贴命令行的图,我是首先编译的 T.java文件,再编译的Test.java文件
应该是编译器的原因吧。如果用ecplise编译应该可以.* ,用命令来编译毕竟不是功能很强大。
你的环境变量中classpath要重新设定,在cmd命令框中输入以下命令后再做javac编译操作。
set classpath=c:\Study\Lesson3;%classpath%
而且你需要先要搞清楚package的概念,看你贴的代码中package是的根目录下是com,而你输入javac PackageTest.java这个命令时是在c:\Study\Lesson3这个路径下,说明你的PackageTest.java中声明语句:package com.yeahgenius.test与实际不吻合。
你有两种选择:
选择一:
1.删除PackageTest.java和ImportTest.java中 package com.yeahgenius.test这句申明,2.
输入set classpath=c:\Study\Lesson3;%classpath%;然后输入cd c:\Study\Lesson3进入根目录下
3、输入javac PackageTest.java
4、输入javac ImportTest.java
5、输入java ImportTest
选择二:
输入mkdir com
cd com
mkdir yeahgenius
cd yeahgenius
mkdir test
cd test
copy c:\Study\Lesson3\PackageTest.java .
copy c:\Study\Lesson3\ImportTest.java .
set classpath=c:\Study\Lesson3;%classpath%
javac PackageTest.java
javac ImportTest.java
java ImportTest
还有一种情况,当Eclipse 的JDK与java文件编码的jdk不匹配时也会报错。
望采纳谢谢。
我想知道为什么将import a.b.c.T改成import a.b.c.*就会报错,编译不通过