带有main函数的打包文件

aipb2008 2008-04-14 12:30:10
//:d:\zhum\Test.java
package zhum;

public class Test{
public println(){
System.out.println();
}
public static void main(String[] args){
println();
}
}

d:\zhum>javac Test.java //通过
d:\zhum>java Test //异常 NoClassDefFoundError 跟了一堆信息


为什么?这种情况该怎么办?
我的classpath没问题,包含了d:\
...全文
164 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_saw_you 2008-04-14
  • 打赏
  • 举报
回复
貌似应该是 d:\>java zhum.Test 你应该看看你的目录结构 如果是 d:\zhum\Test.class 就是上面的命令
duzhonghua 2008-04-14
  • 打赏
  • 举报
回复
d:\>java zhum.Test 应该是这样运行的 (不要忘了你的包名)
i_saw_you 2008-04-14
  • 打赏
  • 举报
回复
貌似应该是 d:\>java zhum.Test
evoloyeu 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 NbPrince 的回复:]
引用 9 楼 huanlingpiaohun 的回复:
不好意思,打的太快,看错了
d:\zhum\javac -d . Test.java
d:\zhum\java Test


也是不行的

楼主记住,可运行包(含main),运行时要 java 完整包名.类名
至于是什么原因,只有靠大虾们解释了。
[/Quote]
aipb2008 2008-04-14
  • 打赏
  • 举报
回复
谢谢热心的各位,问题解决了,其实就是如10楼所说,带main的打包类运行时必须加完整包名.类名。不过不知道什么原因。

回楼上,javac不会自己创建包目录,有些IDE是可以的。
shalu2008 2008-04-14
  • 打赏
  • 举报
回复
有点看明白楼主的意思了。

d:\zhum>javac Test.java编译的结果是:在d:\zhum\目录下创建了一个文件夹,文件夹的名字是:zhum,里面有

一个text.class文件。也就是全部路径是:d:\zhum\zhum\test.class.

而在d:\zhum下面并没有test.class,所以编译d:\zhum>java Test 的时候出错。

所以运行的时候要加上包名,如大家的说法d:\>java zhum.Test
huanlingpiaohun 2008-04-14
  • 打赏
  • 举报
回复
哦,必须加全名,
加了全名就可以了

huanlingpiaohun 2008-04-14
  • 打赏
  • 举报
回复
如果不对的话应该就是这样吧,
d:\javac -d . Test.java
d:\zhum\java Test
我觉得跟全名不全名没关系,当时看到问题就觉得
应该是楼主把包和文件夹的概念混淆着等同起来

而其实我们建立的包是通过package语句来的,并不是
建里一个文件夹,然后把类放进去就相当于有了包名

所以可一试试d:\javac -d . Test.java
假如还不行,那我就是我理解错了可能
J_Factory 2008-04-14
  • 打赏
  • 举报
回复
包也是一种类,既然你打包了,运行时就要带上包名,不然该报错的
NbPrince 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huanlingpiaohun 的回复:]
不好意思,打的太快,看错了
d:\zhum\javac -d . Test.java
d:\zhum\java Test
[/Quote]

也是不行的

楼主记住,可运行包(含main),运行时要 java 完整包名.类名
至于是什么原因,只有靠大虾们解释了。
huanlingpiaohun 2008-04-14
  • 打赏
  • 举报
回复
不好意思,打的太快,看错了
d:\zhum\javac -d . Test.java
d:\zhum\java Test
huanlingpiaohun 2008-04-14
  • 打赏
  • 举报
回复
d:\zhum\javac -d . zhum.Test
d:\zhum\java zhum.Test
试试
i_saw_you 2008-04-14
  • 打赏
  • 举报
回复
这个 我就没法解释清楚了 我个人认为 包相当于文件的相对路径 就是相对与当前目录的路径
aipb2008 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 i_saw_you 的回复:]
d:\zhum>java Test 应该是d:\>java zhum.Test
我刚在我的机子试过了
。如果还是不行的话,我就 怀疑我的人品了 。注:解决后立即 结帖 给分
[/Quote]

那为什么要退到包外在java+包名.类名 呢?

ps:解决了我自然要给分。
i_saw_you 2008-04-14
  • 打赏
  • 举报
回复
d:\zhum>java Test 应该是d:\>java zhum.Test
我刚在我的机子试过了
。如果还是不行的话,我就 怀疑我的人品了 。注:解决后立即 结帖 给分
aipb2008 2008-04-14
  • 打赏
  • 举报
回复
回楼上各位
package zhum

public class Test{
public static void println(){
System.out.println();
}
public static void main(String[] args){
println();
}
}

发那个代码又点问题,看这个。
我已经在zhum目录下了:
d:\zhum>javac Test.java //通过
d:\zhum>java Test //异常 NoClassDefFoundError 跟了一堆信息

即使用你们的方法,同样结果。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧