Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法运行简单编译的java程序?_Java_Compiler Construction_Javac - Fatal编程技术网

无法运行简单编译的java程序?

无法运行简单编译的java程序?,java,compiler-construction,javac,Java,Compiler Construction,Javac,我在ArchLinux上,我刚刚安装了JRE和JDK,所有正确的bin文件(javac和java)都在/opt/java/bin中/ 我只是编译了一个标准的hello world,并用运行javac./hello.java的javac编译了它,这就构成了一个类 现在我的问题是运行它。我运行java./helloworld.class,它会给我一个错误,即使我指向java的文件不存在: Exception in thread "main" java.lang.NoClassDefFoundErro

我在ArchLinux上,我刚刚安装了JRE和JDK,所有正确的bin文件(javac和java)都在/opt/java/bin中/

我只是编译了一个标准的hello world,并用运行
javac./hello.java
的javac编译了它,这就构成了一个类

现在我的问题是运行它。我运行java./helloworld.class,它会给我一个错误,即使我指向java的文件不存在:

Exception in thread "main" java.lang.NoClassDefFoundError: //helloworld/class
Caused by: java.lang.ClassNotFoundException: ..helloworld.class
(..omitted for clarity..)
Could not find the main class: ./helloworld.class.  Program will exit.
您将注意到错误的第一行,它使用路径
//helloworld/class

当我向java提供一个绝对路径,即
java/home/foo/helloworld.class
时,它会给出相同的错误,但在第一行中用
替换路径的
/
,再次使用munged


你认为哪里不对?我真的不知道它为什么要这样做。

运行java时,只需传递完全限定的类名(包括包),而不是文件名

java helloworld
将查找helloworld.class


java helloworld.class
将查找helloworld/class.class

当您运行java时,只需传递完全限定的类名(包括包),而不是文件名

java helloworld
将查找helloworld.class

java helloworld.class
将查找helloworld/class.class

如果您不以
#java file.class
你把它当作
#javac PATH/file.java
#java路径/文件

在使用JAVA命令时,不要添加.class。

您不会以
#java file.class
你把它当作
#javac PATH/file.java
#java路径/文件


使用JAVA命令时不要添加.class。

实际上,您应该这样编译它

javac helloword.java
运行程序

java helloword

实际上你应该这样编译它

javac helloword.java
运行程序

java helloword

还有一件事:添加命令行选项“-classpath.”或它的短版本“-cp.”,即您的命令行应该如下所示: java-cp。地狱世界


这是如果您的类位于当前目录中。否则,应将“.”替换为可以找到类的路径

还有另一件事:添加命令行选项“-classpath.”或它的短版本“-cp.”,即您的命令行应该如下所示: java-cp。地狱世界


这是如果您的类位于当前目录中。否则,应将“.”替换为可以找到类的路径

啊。。太好了,这就解释了一切。啊。。很好,这就解释了一切。