运行没有包结构的java类

时间:2017-07-19 08:29:52

标签: java

有一个类a.b.c.Hello,我只会传递Hello.class文件。我想使用类似的东西来运行:

java Hello   

 //or

java a.b.c.Hello

这导致我NoClassDefFoundError。通常情况下,我会在a/b/c类帐户中添加-classpath dirs,并将其添加到a/b/c选项中,但是:

  • 有没有办法在像这样的包中运行类,而不必将其放在.class 中以匹配包名称?

我发现所有解决方案都说明目录结构必须与程序包命名相匹配,但我希望直接从文件夹中运行v 25.+文件,而无需重新创建文件夹结构

2 个答案:

答案 0 :(得分:1)

  

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

是:使用罐子。将.class文件放在jar中(使用正确的路径),然后:

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

这当然非常像将它放在a/b/c目录中;它只是目录在jar中,而不是文件系统。

答案 1 :(得分:0)

这些包不只是structure您的课程(在文件夹中),还会创建namespace。虽然简单的类名是Hello,但真正的类名是a.b.c.Hello。

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

不推荐,但你也可以将你的类放在默认包中。只需删除'包...'线。