【问题标题】:Why do I have to be outside the package's folder to properly execute the class file?为什么我必须在包的文件夹之外才能正确执行类文件?
【发布时间】:2018-11-15 12:45:01
【问题描述】:

(注意:我知道我在这里没有使用标准命名约定。这些名称只是为了简单起见。)

我有一个名为“PackageTest.java”的文件。它的唯一目的是在控制台上打印一行说“这有效!”。它属于一个名为 main 的包。在我的控制台中,我执行命令:

javac -d . PackageTest.java

这将创建一个名为 main 的新目录(文件夹),其中包含名为“PackageTest.main”的类文件。我 CD 进入它的父目录,然后执行以下命令:

java main.PackageTest

然后控制台显示:

This works!

所以文件执行了。那挺好的。现在我将 CD 放入“主”文件夹。我执行命令:

java main.PackageTest

只为得到结果:

Error: Could not find or load main class main.PackageTest
Caused by: java.lang.ClassNotFoundException: main.PackageTest

所以我试试这个命令:

java PackageTest

现在我得到了这个错误:

Error: Could not find or load main class PackageTest
Caused by: java.lang.NoClassDefFoundError: main/PackageTest (wrong name: 
PackageTest)

为什么我必须在目录之外才能执行文件?

【问题讨论】:

    标签: java package javac


    【解决方案1】:

    包(和文件夹)在语义上是有意义的。您可以指定类路径,如果您使用绝对路径,您可以在树中的任何位置移动并仍然运行代码。也可以使用相对路径。喜欢,

    java -cp .. main.PackageTest
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2021-12-04
      • 2013-07-27
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多