编译的包不会运行

时间:2012-10-07 07:33:31

标签: java classpath packages

我有一个包含D:\ProjectGsc\内的一些类的包。包根文件夹名为gsc,包含三个子目录,即utilcoremodules。其中每个文件都是一些文件,core内有一个名为gsc.class的文件。除此之外,res文件夹中还有一个文件夹gsc,其中包含我的包类中JFrame和JDialogs使用的一些图像。我设法使用-classpath \projectgsc编译所有内容,并且在调试代码时,所有内容都可以顺利编译。但我根本无法运行它。当我在java gsc -classpath \projectgsc内时,我尝试D:\ProjetctGsc\gsc\core\,但它在主线程中给出了异常(main的语法肯定是正确的)java.lang.NoClassDefFoundError: gsc (wrong name: gsc/core/gsc)。是因为我的班级名称gsc在包gsc.core内?

提前致谢! (顺便说一句SO不允许我在运行时将问题命名为“Classpath问题”,所以这是我能想到的最好的标题,随时可以编辑它)

1 个答案:

答案 0 :(得分:3)

是的,在包gsc中运行一个名为gsc.core的类(违反Java命名约定,btw)(ick - 包含类名的包名称;令人困惑!)你要写< / p>

java -classpath d:\ProjectGsc gsc.core.gsc

但是你必须编译它,以便你有一个目录结构

d:\ProjectGsc
             \gsc
                 \core
                      \gsc.class

如果您使用-d选项javac:

,您将自动获得此信息
javac -d d:\ProjectGsc *.java

(当然,相应调整。)

你可能会发现,如果你是Java新手,使用能够处理所有这些问题的IDE会让你的生活变得更轻松。