从终端运行java类

时间:2012-02-10 20:39:58

标签: java terminal

之前已经问过这个问题,但由于某些原因,我仍然无法弄清楚什么是错的。 我在文件src中的包语法测试中得到了一个名为NewClass的类。从src路径我输入:

javac src / syntaxtest / NewClass.java

并且编译了类,我可以在syntaxtest文件夹中看到NewClass.class。现在从同一个路径或甚至与NewClass.class相同的文件夹,我无法弄清楚如何从终端运行该类。我做了很多不同的尝试,但我得到了

ClassDefNotFound或ClassDefNotFound(错误名称:syntaxtest / NewClass)

3 个答案:

答案 0 :(得分:8)

尝试“java -cp src syntaxtest.NewClass”。

也就是说,如果你有一个文件夹“src”,它包含子文件夹(包)“syntaxtest”,而类“NewClass”在“package syntaxtest”中,那么上面的命令就可以了。

$ ls src/syntaxtest
NewClass.java
$ cat src/syntaxtest/NewClass.java
package syntaxtest;
public class NewClass {
  public static void main(String args[]) {
    System.out.println("Hello, World!");
  }
}
$ javac src/syntaxtest/NewClass.java
$ java -cp src syntaxtest.NewClass
Hello, World!

答案 1 :(得分:1)

我做了以下测试:

  • 在home / test / blah / TestClass.java

    中创建了一个java文件 包裹等等;

    public class TestClass {     public static void main(String [] args){         System.out.println(“Hello World!”);     } }

  • 转到目录home / test /

  • 键入以下内容编译文件:
javac blah/TestClass.java
  • 编译好文件。
  • 输入:
java blah.TestClass
  • 收到消息“Hello World!”正如所料:程序运行正常。
  • 去目录家
  • 尝试输入:
  

java test / blah.TestClass

  • ...还有许多其他的斜线和点组合......没有用......继续像你一样得到异常:
java.lang.NoClassDefFoundError

所以在我看来,使用'java'命令运行Java类,你真的必须在应用程序的根文件夹中。

答案 2 :(得分:0)

我有类似的问题。 我想直接从Mac finder使用src和bin文件夹组织我的项目,并使用Emacs或其他文本编辑器。我只是不喜欢日食。

您无法从其他文件夹执行这些类,但您可以从另一个文件夹编译到您要执行的文件夹中。

例如(假设没有包),移动到bin文件夹并运行:

$ javac ../src/name.java -d ../ bin /

(从src文件夹编译并直接在bin上输出.class文件)