java中import,用*号代替类名导入类失败,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中import,用*号代替类名导入类失败,为啥?相关的知识,希望对你有一定的参考价值。

文件一:
package com.shengsiyuan.test;

public class PackageTest

public static int i = 100;


文件二:
import com.shengsiyuan.test.PackageTest;

public class ImportTest

public static void main(String [] args)

System.out.println(PackageTest.i);



在我的电脑中,将文件二中的PackageTest换为*号后再运行,会出现以下代码:
ImportTest.java:7:无法访问PackageTest
错误的类文件:.\PackageTest.java
文件不包含类 PackageTest
请删除该文件或确保该文件位于正确的类路径子目录中。
System.out.println(PackageTest.i);
1 错误

哪位高手能帮忙看看,非常感谢!
而如果不将文件二中的PackageTest换为*号,再编译的是能通过的,各位大侠,请仔细看完代码再回答,谢谢!本人用的是windows 7系统

参考技术A 检查一下你源文件下有几个PackageTest.java。
因为你ImportTest没写包名,所以我怀疑这和你引用的PackageTest不在同一个包,是不是当前包下也有一个错误的PackageTest?
参考技术B 检查一下你的src文件夹里面PackageTest是不是在com/shengsiyuan/test/目录下面,还有文件名对不对,比如有没有叫Main.java
或者是不是路径里面有中文名
参考技术C 我在linux上,运行你的程序,两种情况都是可以运行的,结果一样。
请你在仔细检查一下你环境变量CLASSPATH.追问

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
这是我电脑的环境变量CLASSPATH,我的系统是windows 7

追答

你的classpath是正确的。
我注意到:错误的类文件:.\PackageTest.java
为什么会有一个“.\"?
是不是你的ImportTest.java和com文件夹没在同一目录下???
我没在windows下写过代码,所以不清楚。

建议你尝试使用linux,一旦你适应之后,你会彻底喜欢上它。

参考技术D 看看这篇文章:http://apps.hi.baidu.com/share/detail/7193726 第5个回答  2011-04-11 package权限问题。
PackageTest可能不是公有的,只允许包内的类访问。

Import语句基础

1 问题

在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

2 方法

1.import导入声明可分为两种: 

1) 单类型导入(single-type-import)

例:

2) 按需类型导入(type-import-on-demand)例:

2. 举例java.util.ArrayList类的4种遍历方式:

import java.util.ArrayList;
import java.util.Iterator;
public class Import
   public static void main(String[] args)
       ArrayList<Integer> list = new ArrayList<>();
       //依次加入数值
       for(int i=0; i < 10; i++)
           list.add(i);
       
       //方法1
       Iterator it1 = list.iterator();
       while(it1.hasNext())
           System.out.println(it1.next());
       
       //方法2
       for(Iterator it2 = list.iterator();it2.hasNext();)
           System.out.println(it2.next());
       
       //方法3
       for(int tmp:list)
           System.out.println(tmp);
       
       //方法4
       for(int i = 0;i < list.size(); i ++)
           System.out.println(list.get(i));
       
   

3 结语

针对Java 的import语句,提出了import导入声明可分为两种,并且举例了java.util.ArrayList类的4种遍历方式,通过小组的实验,证明该方法是有效的。

以上是关于java中import,用*号代替类名导入类失败,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

import

JAVA中,如何import自己写的类文件?

如何向单个的java文件导入jar包

Java 静态导入Static import

java用import导入时报错

java无法导入本地第三方类