我的教授要求我们创建一个能够在命令提示符下运行的Java程序,但也可以使用NetBeans打开它.
该程序是关于使用不同类型的排序(特别是选择,插入,交换,快速和堆排序).我们的教授特别告诉我们在Java中使用面向对象编程,并且她希望看到一个主类加上可以进行排序的不同类.
我试图在NetBeans中编写程序 - 以为后来我可以使用javac在cmd中运行该程序.
在cmd中,我键入了保存NetBeans项目的路径,并尝试使用javac编译文件.但它说''javac'不被识别为内部或外部命令,可操作程序或批处理文件."
所以我试着将文件保存在sun> sdk> jdk> bin中,然后从那里我尝试编译文件,这很好.当我试图运行它们时,问题出现了.
这是我尝试编译文件的方式:
javac Main.java Sortchoice.java Selection.java SelectionSort.java Insertion.java InsertionSort.java Exchange.java ExchangeSort.java
(我还没有完成接下来两次排序的语法.)
以下是我尝试在cmd中运行文件的方法:
java Main Sortchoice Selection SelectionSort Insertion InsertionSort Exchange ExchangeSort
和cmd说:
exception in thread "main" java.lang.NoClassDefFoundError: main (wring name: myjava/Main) at java.lang.ClassLoader.defineClass1(Nativ... Method)" at java.lang.ClassLoader.defineClass(ClassL... at java.security.SecureClassLoader.defineCl... at java.net.URLClassLoader.defineClass(URLC... at java.net.URLClassLoader.access$000(URLCl... at java.net.URLClassLoader$1.run(URLClassLo... at java.security.AccessController.doPrivile... Method) at java.net.URLClassLoader.findClass(URLCla... at java.lang.ClassLoader.loadClass(ClassLoa... at sun.misc.Launcher&AppClassLoader.loadCla... at java.lang.ClasLoader.loadClass(ClassLoad... at java.lang.ClassLoader.loadClassInternal(...
我该怎么办?(对不起我的千分百解释.我只想尽可能多地提供详细信息.)
我还要强调一点,我只是Java编程的初学者.
如果单击NetBeans中的build,它应该(在编译器输出中)给出一条消息,例如"要从命令行运行此应用程序而不使用Ant,请尝试:java -jar yourPathToRun"
最好的方法是:
1)用src\
和tests\
在其中创建一个目录(如果你没有使用JUnit,测试是可选的).
2)假设你有package myjava;
你文件的顶部(并确保这是你的教授想要的东西,如果他们不在正确的地方标记的东西就变得很痛苦),创建一个src\myjava
目录(如果你正在做JUnit一个tests\myjava
目录).
3)将您的文件复制到src\myjava
目录中
4)删除您的NetBeans项目并将其重新创建为新的源代码.在设置src
(和可选test
)目录时,添加src\
(和可选的tests\
)目录.不要添加src\myjava
目录,否则它将无法在NetBeans中运行.
5)创建一个名为classes\
(所以你有src\
,classes\
也许\tests
都在同一个地方)
6)在命令行类型上 javac -d classes -cp classes src/myjava/*.java
-d
告诉编译器将.class文件放在何处
-cp
告诉编译器在哪里查找类文件
src/myjava/*.java
告诉它编译所有的.java文件 src/myjava
7)通过它运行 java -cp classes myjava.Main
-cp
classes告诉它在classes目录中查找.class文件
myjava.Main
是要运行的类的名称
最好将javac添加到PATH环境变量中,而不是将.java文件放入同一目录中.那里会非常拥挤.
要运行,你只需要
java Main
而不是将每个类放在命令行上.
你在.java文件中声明了一个包吗?喜欢,
包myjava;
?如果是,则必须是命令字符串
java myjava.Main
这会回答你的问题吗?