为什么我需要删除包行以在NetBeans之外运行Java?

时间:2015-08-06 21:29:15

标签: java netbeans

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

package firstprogram;

哪些NetBeans会自动放在每个新文件的顶部,或者我收到错误:

Error: Could not find or load main class FirstProgram

但是,如果删除该行,则该程序不再在NetBeans中运行!我必须选择是从NetBeans中运行.java还是不运行.java,这似乎是对的。

我所做的研究让我觉得这与目录结构有关?但是我读到的一切都直接超出了我的脑海。 NetBeans的结构包含" build"," dist"," nbproject"和" src",但是当我使用命令行时我只需将.java文件放在空目录和javac中。

任何解释都表示赞赏!我从中学到的书籍和教程都假设您只是使用NetBeans,或者根本没有包装行。

3 个答案:

答案 0 :(得分: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选项中的路径可以是相对路径或绝对路径,当它包含空格时使用""

答案 1 :(得分:0)

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

包(和文件夹)允许您使用逻辑模式排列体系结构。

此处有更多信息:http://www.tutorialspoint.com/java/java_packages.htm

答案 2 :(得分:0)

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

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

java packageName.className

在这种情况下

java firstprogram.FirstProgram