如何在命令提示符中运行NetBeans项目?

16

我的教授要求我们创建一个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

(我还没有完成接下来两个排序算法的语法。)

这是我尝试在命令提示符中运行文件的方式:

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编程的初学者。

9个回答

23
如果你在NetBeans中点击“构建”,它应该会在编译器输出中给你一个消息,类似于:“如果要在命令行中不使用Ant运行此应用程序,请尝试:java -jar yourPathToRun”。

14
最好的方法如下:
1)创建一个带有 src\tests\ 目录的文件夹(如果您不使用 JUnit,则 tests 是可选的)。
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 告诉编译器在哪里查找 class 文件
  • src/myjava/*.java 告诉它编译 src/myjava 中的所有 .java 文件
7)通过 java -cp classes myjava.Main 运行它。
  • -cp classes 告诉它在 classes 目录中查找 .class 文件
  • myjava.Main 是要运行的类名

6
  1. 最好将javac添加到您的PATH环境变量中,而不是将.java文件放在同一目录中。否则,那里会变得非常拥挤。
  2. 运行时,只需要

    java Main

    而不是在命令行上输入每个类。

  3. 您的.java文件中是否声明了一个包?例如,

    package myjava;

    如果是这样,命令字符串必须是

    java myjava.Main

这回答了您的问题吗?


2

右键点击“我的电脑”>属性>高级>环境变量...将JDK中的bin目录添加到Path变量中。

示例:

变量名称:path

变量值:C:\Program Files\Java\jdk1.6.0_16\bin

现在可以从命令提示符的任何目录中使用java和javac了。


1
最简单的方法是在项目主文件夹下的dist文件夹中运行.jar文件。确保计算机的SystemEnvironmental Variables中JDK的bin文件夹路径设置正确,以便找到常用的jar.exejava.exejavac.exe等文件(如果需要说明,请参见本帖中的其他帖子)。
1)在Netbeans中进行一次清洁构建,按F11或单击Run菜单并单击Build Project。点击所有提示,需要进行干净的构建才能执行此操作。
2)在命令提示符中导航到项目的dist文件夹
3)在命令行中键入并运行:java -jar yourMainFile.jar 无需创建单独的文件夹,无需复制文件,无需在命令行参数中包含多个文件。但是,每次更改代码后在命令行上运行之前都必须重新构建项目。

0
创建一个文件夹,比如说 C:\myjava。将你的 .java 源代码从 netbeans 保存它们的地方复制到你的 C:\java 文件夹中。打开你刚刚粘贴的每个 .java 文件并删除声明包的那一行,例如 package myjava。使用 javac 进行编译,例如 javac c:\myjava\MyJava.java。然后像这样运行它,java c:\myjava\MyJava

0

按照以下步骤操作(代码示例仅为示例,您需要根据自己的设置进行调整):

  1. 将JAVA_HOME设置为JDK安装的目录。

    set JAVA_HOME="c:\Program Files\Java\jre1.6.0_12"

  2. 将PATH设置为包含JAVA_HOME中bin目录。

    set PATH=%PATH%:%JAVA_HOME%\bin

  3. 切换到源代码的根目录。如果您已经声明了代码所在的包,那么这是您的包结构的根目录。如果没有,则是包含.java文件的目录:

    cd c:\My\Source\Directory

  4. 使用您的Java文件作为参数执行javac:

    javac Class1.java Class2.java

  5. (假设一切都编译正确) 使用包含主方法的类名作为参数执行java (如果您包含了包声明,则您的类名是完全限定的,这意味着它应该在类名之前包括包名称,并用'.'分隔包名称和类名):

    java Main


由于Java Home的使用可能会与其他工具产生冲突,我建议直接将JRE设置到路径中,而不是使用Java Home。例如,Java Home与Maven不兼容,因为它假定Java Home是JDK根路径... - MetroidFan2002
如果您在控制面板中没有设置JAVA_HOME,而只是在本地shell中设置了它,那么它不会影响其他任何东西。 - Jared

0

在您的项目中,您将有一个build目录。导航到该目录。接下来打开classes文件夹。
现在在此处打开终端并运行java x/y
其中,x是您的主类所在的包的名称,y是该Java文件的名称


0
在你的class.java文件中注释掉package行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接