从终端运行java类
这个问题之前已经被问过了,但是由于某些原因我仍然无法确定什么是错的。 我在文件src中得到了一个名为NewClass的包,在包中的syntaxtest中。从SRC路径I型:从终端运行java类
的javac的src/syntaxtest/NewClass.java
和类被编译,我可以看到NewClass.class在syntaxtest文件夹中。现在从相同的路径或甚至与NewClass.class相同的文件夹,我不知道如何从终端运行类。我已经做了很多不同的尝试,但我醚得到
ClassDefNotFound或ClassDefNotFound(错误的名称:syntaxtest /的NewClass)
试试 “java -cp src syntaxtest.NewClass
”。也就是说,如果你有一个包含子文件夹(包)“syntaxtest”的文件夹“src”,并且类“NewClass”在“包语法测试”中,那么上述命令将起作用。
$ 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!
nope不起作用。在这里和那里尝试了几个斜杠的变化,但仍然没有。 – Giannis 2012-02-10 20:48:44
@latusaki:我假设你的包名是“syntaxtest”;如果它是“src.syntaxtest”,那么尝试“java src.syntaxtest.NewClass'”。 – maerics 2012-02-10 20:52:48
没有src只是一个文件夹。里面有另一个名为syntaxtest的文件夹。然后是.java和.class文件。 NewClass在syntaxtest包中。很奇怪,我无法弄清楚如何打电话给班级。顺便说一句,如果我从类中删除包,所以它不在我可以称之为的任何包中。所以包装肯定有问题。 – Giannis 2012-02-10 21:01:54
我做了如下测试:
-
创建于家用/测试/嗒嗒的Java文件/ TestClass.java
包等等;
public class TestClass public static void main(String [] args){System.out.println(“Hello World!”); }}
走到名录主页/测试/
- 通过键入编译文件:
javac blah/TestClass.java
- 得到编译好的文件。
- 运行它通过键入: “Hello World” 的
java blah.TestClass
- 得到的消息如预期的那样:程序运行正常。
- 走到名录主页/
- 试图通过打字来运行:
Java测试/ blah.TestClass
- ...等众多斜线和点的组合.....没有工作....继续得到同样的异常为你:
java.lang.NoClassDefFoundError
所以,在我看来,要运行使用命令“Java”作为一个Java类,你真的必须在应用程序的根文件夹中。
我有类似的问题。 我想直接从Mac查找器中使用src和bin文件夹来组织我的项目,并使用Emacs或其他文本编辑器。我只是不喜欢日食。
您不能从另一个文件夹执行这些类,但是您可以执行的是从另一个文件夹编译为要执行的文件夹。
例如(假设没有包),移动到bin文件夹,然后运行:
$ javac的../src/name.java -d ../bin/
(,编译从src文件夹并直接在bin上输出.class文件)
你试过“java NewClass”吗?确保你的目录在尝试命令之前(以它的形式) – Andrew 2012-02-10 20:41:50
当我在文件夹中尝试java NewClass时,NewClass.class是我得到的ClassDefNotFound。如果我尝试java syntaxtest.NewClass我得到ClassDefNotFound(错误的名称:syntaxtest/NewClass)。当我尝试这个名字时,我得到了NoClassDefFound ... – Giannis 2012-02-10 20:51:14
“java -cp.NewClass”试试这个 – Andrew 2012-02-10 21:00:53