我有一个包含D:\ProjectGsc\
内的一些类的包。包根文件夹名为gsc
,包含三个子目录,即util
,core
和modules
。其中每个文件都是一些文件,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问题”,所以这是我能想到的最好的标题,随时可以编辑它)
答案 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会让你的生活变得更轻松。