java用import导入时报错

为什么我在导入的时候用com.Packagename;可以顺利编译,但是用com.*时却报错,提示找不到类名?补充,结果为如果是就可以编译执行... 为什么我在导入的时候用 com.Packagename; 可以顺利编译,
但是用com.* 时却报错,提示找不到类名?
补充,

结果为

如果是

就可以编译执行
展开
 我来答
anglewang98
推荐于2017-11-29 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:284万
展开全部

你的环境变量中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

选择二:

  1. 输入mkdir com

  2. cd com

  3. mkdir yeahgenius

  4. cd yeahgenius

  5. mkdir test

  6. cd test

  7. copy c:\Study\Lesson3\PackageTest.java .

  8. copy c:\Study\Lesson3\ImportTest.java .

  9. set classpath=c:\Study\Lesson3;%classpath%

  10. javac PackageTest.java

  11. javac ImportTest.java

  12. java ImportTest

追问

谢谢你的回答,学了好多东西,但是还是有点不明白

我是用javac -d . 在当前目录建立的包,可以import java.until.*之类的包,也可以调用我自己创建的,把com.yeahenius.test.*;改成直接调用类名com.yeahgenius.test.PackageTest就可以编译执行了,所以是说一个包下面只有一个类的话,不可以用*来取代么?

追答
你要知道,一般*代表了当前目录的所有文件,而且默认是根据首字母排序的,ImportTest在PackageTest之前被请求编译,而ImportTest.java依赖于PackageTest.class,一般不建议这么写。
百度网友0955986aa
2014-01-17 · TA获得超过197个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:196万
展开全部

首先你要先说明你要import的是哪个类?在哪个包里?

假设 类 classname 在 packagename 包里。

然后

import com.packagename.classname;

或者 

import com.packagename.*;

应该就可以了。


但是如果你用:

import com.*;

就会出错,因为classname 不在 com包里。


建议:

尽量都用

import com.packagename.classname;

这样会避免packagename 包下面的一些你不熟悉的类 和 你本里的类重名,导致编译错误。

追问

程序很简单

如果我用 import com.yeahgenius.test.PackageTest;就能顺利编译,

但是 import com.yeahgenius.test.*; 就会报错。。。

追答
你的classpath是什么?你是在cmd里手动编辑的,所以你要把当前文件夹放到classpath里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chongtongba
2014-01-17 · 超过12用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:34.2万
展开全部
可能com这个名字已经被用掉了,在你看不见的地方,你试试换个名字,
比如comtest.Packagename和comtest.*

而且你这个歧义比较大我也搞不清你的意思,Packagename是代表包名吗?但是你明明是把它当做一个类文件(.class)在用啊。

不会的话明早追问我吧......
追问

程序很简单

如果我用 com.yeahgenius.test.PackageTest;就能顺利编译,

但是 import com.yeahgenius.test.*; 就会报错。。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dsltyyz
2014-01-17
知道答主
回答量:8
采纳率:0%
帮助的人:2.7万
展开全部
你好 这是用法错误 import就像你去找人一样 有名有姓 你说姓 可以找到很多一样的姓氏的人 你说姓名 就只能找到一个(假如都是唯一) 若是你什么都不说 那就爱莫能助了 有链接供你参考
http://wenku.baidu.com/link?url=YE1br1lrX7SMA_BOHZPXUYoWhofGHC7dDJywpVKytsjBbQIN2Q9oi1b724nQblhMr__OjZzIgME86hf9gAah77pG4OrNUmrA121vkLpBQ77
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火两重天
2014-01-17 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:997万
展开全部
包的名字要全部写上。
如果com.packageName下有多个类,你用到了这个包下的多个类,可以通过com.packageName.*;来导入。
楼主,采纳我的吧~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式