所以我对编程很陌生,而且我一直在用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,或者根本没有包装行。
答案 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/MyClass
或java mypackage.MyClass
运行该程序。
但是,如果我在其他地方,我将不得不使用cp
选项说明类文件的位置:java -cp c:/MyNetbeansProject/build/classes mypackage/MyClass
。 cp
选项中的路径可以是相对路径或绝对路径,当它包含空格时使用""
。
答案 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