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

当前页面: 开发资料首页J2SE 专题import test.*; 编译出错

import test.*; 编译出错

摘要: import test.*; 编译出错


我编写了一个类,用package语句将其放在一个包中。但需要引用时,出现了奇怪的问题:
如果import test.类名 一切正常; 但如果import test.*; 编译出错,提示我无法操作本程序中要用到的包中的类。
*不是表示所有的类吗?为什么会出错?用类名正常,说明路径没有问题。谁遇到过?


没人帮我解决吗?


是不是编译器问题?


诡异
你确定目录结构正确吗


昨天编写webService的时候也遇到这样的问题,还不知道是什么原因.引用单个类就没问题;
(*)不行.汗!!!


PrimNumber.java 代码如下:
package test;

public class PrimNumber
{
public static void main(String args[])
{
int sum=0,i,j;
for( i=1;i<=10;i++) //找出10以内的素数.
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
break;
}

if(j>i/2) System.out.print(" 素数 "+i);
}
}
}

Hello.java 如下:
import test.PrimNumber; /*写成 import test.*; 就编译出错,说cann't access PrimNumber,说什么类文件坏了之类的错误。但单独执行PrimNumber没错,而且强行import也对,问题很怪异呀,是jdk的吗?*/
public class Hello
{
public static void main(String args[])
{
PrimNumber num=new PrimNumber();
String a[]={"ok"};
System.out.println(a[0]);
num.main(a);
}
}





目录结构绝对正确,包的结构还是能搞清楚的,classpath中也包括.;
Hello.java 与test目录在同一层次,肯定没问题。
强制指定类名没错呀,而且如果用jdk的包,用*也可以,单单自定义包不行。


好好检查你的代码吧,不可能是编译器出错的!
我一直这么用,也没有问题的。


代码没有问题呀,我都贴出来了。大家帮我看看,只要用*就出错,必须制定类名。


在Hello.java 中别用PrimNumber num=new PrimNumber();num.main(a);
的方式来调用PrimNumber.java中的main,你改成这样试试:
import test.*;//或者import test.PrimNumber;都可以
public class Hello
{
public static void main(String args[])
{
//PrimNumber num=new PrimNumber();
String a[]={"ok"};
System.out.println(a[0]);
PrimNumber.main(a);
}
}



Static方法可以直接对类调用Static方法,不用实例化



public class Hello
{
public static void main(String args[])
{
PrimNumber num=new PrimNumber();
String a[]={"ok"};
System.out.println(a[0]);
num.main(a);
}
}

请给上面这个类也打个包


楼主你的代码没有问题
我刚用MyEclipse 5.0下用
import test.*;引入
都好使。输出如下:
ok
素数 1 素数 2 素数 3 素数 5 素数 7
可能是你的环境问题。


换个编译器试试!


应该是和环境有关系,我刚才试了一下,如果用Eclipse3的,就只能是我之前说的那种方式才行;如果是在dos窗口下直接敲指令,不管用哪种方式,都必须先打包才行。(两种方式的jdk,jre用的都不同)


谢谢各位热心帮助


我想给分,总提示“贴子回复次数大于跟给分次数 ”
可我没那么多分数给,只能谢谢各位了


谢谢onlykgx(还行) ,我给Hello也打包了,就对了。
这是为什么呢?不写,不就是无名包吗? 如果要调用自己定义的包,最好调用文件也属于一个包吗?


这个就是Hello没有写package造成的。反正永远记住写package。


↑返回目录
前一篇: jar双击没有反应?
后一篇: Integer i = new Integer("0x10")