【问题标题】:Why do I need to delete the package line to run Java outside of NetBeans?为什么我需要删除包行才能在 NetBeans 之外运行 Java?
【发布时间】:2015-10-30 05:06:29
【问题描述】:

所以我对编程完全陌生,而且我一直在使用 NetBeans IDE 编写一些 Java。我的代码在 NetBeans 中运行良好,但我也尝试使用命令行运行它。但是,如果我从命令行运行它,我必须删除该行:

package firstprogram;

哪个 NetBeans 自动放置在每个新文件的顶部,否则我会收到错误消息:

Error: Could not find or load main class FirstProgram

但是,如果我确实删除了该行,那么程序将不再在 NetBeans 中运行!我必须选择是否在 NetBeans 中运行 .java 似乎不正确。

我所做的研究让我认为这与目录结构有关?但是我读到的所有内容都直接在我脑海中浮现。 NetBeans 有一个包含“build”、“dist”、“nbproject”和“src”的结构,但是当我使用命令行时,我只需将 .java 文件放在一个空目录中,然后从那里开始 javac。

感谢任何解释!我从中学习的书籍和教程要么假设您只是使用 NetBeans,要么根本没有包线。

【问题讨论】:

  • 你用什么命令从命令行运行?
  • @bpgeck java FirstProgam
  • 好的,下面看我的官方回答
  • 您需要指定类的全限定名。确保您在顶级目录(firstprogram)之上

标签: java netbeans


【解决方案1】:

只要您提供正确的相对或绝对路径,您就可以在任何地方使用javac 命令编译您的类。当您想使用java 程序运行程序时,问题就来了。

您必须提供与您的包声明相对应的正确路径。例如,如果我在包 mypackage 中有“MyClass”,第一行将如下所示:

package mypackage;

存储在磁盘上的类源:

c:/MyNetbeansProject/src/mypackage/MyClass.java

编译后的字节码:

c:/MyNetbeansProject/build/classes/mypackage/MyClass.class

现在,如果我在文件夹 c:/MyNetbeansProject/build/classes/ 中打开命令提示符/终端,我可以使用 java mypackage/MyClassjava mypackage.MyClass 运行程序。

但是,如果我在其他地方,我将不得不使用cp 选项说明类文件的位置:java -cp c:/MyNetbeansProject/build/classes mypackage/MyClasscp 选项中的路径可以是相对路径也可以是绝对路径,包含空格时使用""

【讨论】:

    【解决方案2】:

    所以就像 OcterA 所说的,你应该保持井井有条,但只有一堂课这不是问题。我相信你的问题是你没有在命令行中输入正确的命令。

    首先 cd 到正确的目录,当你想在该目录下的包中执行文件时,你需要进入

    java packageName.className
    

    在这种情况下

    java firstprogram.FirstProgram
    

    【讨论】:

      【解决方案3】:

      包是目录架构。 如果您的类在 com.acme.test 包中,则该类应该在 com/acme/test 目录中。 不要将您的类放在空文件夹中,而是将其放在名为 firstprogram 的文件夹中并执行 javac firstprogram/youclass.java

      该包(和文件夹)允许您按照逻辑模式安排您的架构。

      更多信息在这里:http://www.tutorialspoint.com/java/java_packages.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-15
        • 2013-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-29
        • 1970-01-01
        • 2020-05-12
        相关资源
        最近更新 更多