2017-07-19 40 views
1

有一个类a.b.c.Hello其中我只是得到Hello.class文件交付。我想运行使用类似的东西:运行一个没有包结构的java类

java Hello 

//or 

java a.b.c.Hello 

这导致我到NoClassDefFoundError。一般情况下我有a/b/c迪尔斯与类insdie,我想将它们添加到-classpath选项,但:

  • 是否有一个包这样运行一个类的方法,而不必把它里面的a/b/c匹配包名?

所有的解决方案,我发现状态的目录结构相匹配的包命名,但我想直接从那里是不重新创建文件夹结构

回答

1
的文件夹中运行 .class文件

有没有在这样的包中运行类的方法,而不必将它放在a/b/c中以匹配包名?

是:通过使用jar。把.class文件中的罐子(用正确的路径),然后输入:

java -cp TheJarFile.jar a.b.c.Hello 

这是当然的,非常喜欢把它放在一个a/b/c目录;只是目录在jar中,而不是文件系统。

0

该软件包不仅仅是structure你的课程(在文件夹中),它们还创建了一个namespace。虽然简单的类名是Hello,但真正的类名是a.b.c.Hello。

这是因为类名可能会频繁重复(在不同的库中,f.e),但另一方面必须是可寻址的。例如:'用户','记录器','列表','日期'。

它不被推荐,但你也可以把你的课程放在默认包中。只要删除'包...'一行。