| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 686 人关注过本帖
标题:[求助]请教,可以编译但不能运行【已解决】
只看楼主 加入收藏
叮叮当
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-1-2
收藏
 问题点数:0 回复次数:4 
[求助]请教,可以编译但不能运行【已解决】

不好意思,上次就发过这个问题,但一直没能解决,主要是java文件中包含package关键字就不能运行了,但可以编译。《java编程思想第四版》第八章 多态,最开始的几个例子如下:

//: polymorphism/music/Note.java
// Notes to play on musical instruments.
package polymorphism.music;

public enum Note {
MIDDLE_C, C_SHARP, B_FLAT; // Etc.
}

//: polymorphism/music/Instrument.java
package polymorphism.music;
import static net.gondi.util.Print.*;

class Instrument {
public void play(Note n) {
print("Insturment.play()");
}
}

//: polymorrphism/music/Wind.java
package polymorphism.music;

// Wind objects are instruments
// because they have the same interface:
public class Wind extends Instrument {
// Redefine interface method:
public void play(Note n) {
System.out.println("Wind.play() " + n);
}
}

//: polymorphism/music/Music.java
// Inheritance & upcasting.
package polymorphism.music;

public class Music {
public static void tune(Instrument i) {
// ...
i.play(Note.MIDDLE_C);
}
public static void main(String[] args) {
Wind flute = new Wind();
tune(flute); // Upcasting
}
}


就像上次一样,我的意思是,在这个例子中Music.java是带有程序main入口的文件,并且里面有一行package,于是虽然可以通过编译,然而用cmd运行 java Music后就出现这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Music (wrong name: po
lymorphism/music/Music)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

我的java环境变量都设置好了
D:\jdk\MyJavaCodes\TIJCODE_4TH_2\polymorphism\music>java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

如果编写的java文件中不含package关键字,但有import导入其他class方法的话,就是可以正常的运行,只要加了package关键字就运行出错。。。555,救命~~
上面的代码是抄书上的,希望热心大侠们用cmd运行试试,看看能运行吗?好像用其他一些IDE可以运行,不过偶还是初学者,想用文本编辑器+CMD学习。。

我用的编辑器是EditPlus + 设置的java编译和运行配置,系统是XP,JDK是1.6的。另,CMD下运行
java -classpath . Music
一样会出现那个错误咯。。

[此贴子已经被作者于2007-9-19 10:43:44编辑过]

搜索更多相关主题的帖子: 编译 运行 
2007-09-18 14:26
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

你上次那个CADSystem的,我刚刚看了下,也是一样的错误,很奇怪,我在eclipse里面可以正常运行(有package语句),但是在cmd环境下就不能了,研究中


I'm here, as always...
2007-09-18 14:45
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
我问了下,终于知道了
你应该在polymorphism目录下运行java 类名,也就是说,你的package是polymorphism.music,那么你应该在polymorphism目录下输入java music/Music
因为你在你的java文件里面有一个package了,编译后生成的class文件里面也有,但是如果你在polymorphism.music下运行的话,他又会去找当前目录下的music/Music.class,明显重复了一次package的操作。只要在你的package第一个目录下执行就行了

I'm here, as always...
2007-09-18 15:08
叮叮当
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-1-2
收藏
得分:0 
回复:(叮叮当)[求助]请教,可以编译但不能运行

您说的意思我明白了,非常感谢~!!
我在CMD下从CLASSPATH根目录开始输入路径就能正常运行了,我的CLASSPATH根目录是TIJCODE_4TH_2,polymorphism也包含在其中,所以CMD中——

D:\jdk\MyJavaCodes\TIJCODE_4TH_2>java polymorphism/music/Music
Wind.play() MIDDLE_C

D:\jdk\MyJavaCodes\TIJCODE_4TH_2>java polymorphism/music3/Music3
Wind.play() MIDDLE_C
Percussion.play() MIDDLE_C
Stringed.play() MIDDLE_C
Brass.play() MIDDLE_C
Woodwind.play() MIDDLE_C

D:\jdk\MyJavaCodes\TIJCODE_4TH_2>java polymorphism/music/Music2
Wind.play() MIDDLE_C
Stringed.play() MIDDLE_C
Brass.play() MIDDLE_C

都可以运行了,哈,非常感谢hwoarangzk大哥的帮助!

2007-09-19 10:42
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 

不用不用,你的问题也让我学了东西了,呵呵


I'm here, as always...
2007-09-19 10:45
快速回复:[求助]请教,可以编译但不能运行【已解决】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020142 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved